INET Framework for OMNeT++/OMNEST
inet::visualizer::Ieee80211VisualizerBase Class Referenceabstract

#include <Ieee80211VisualizerBase.h>

Inheritance diagram for inet::visualizer::Ieee80211VisualizerBase:
inet::visualizer::VisualizerBase inet::visualizer::Ieee80211CanvasVisualizer inet::visualizer::Ieee80211OsgVisualizer

Classes

class  Ieee80211Visualization
 

Parameters

bool displayAssociations = false
 
NetworkNodeFilter nodeFilter
 
InterfaceFilter interfaceFilter
 
double minPowerDbm = NaN
 
double maxPowerDbm = NaN
 
std::vector< std::string > icons
 
ColorSet iconColorSet
 
cFigure::Font labelFont
 
cFigure::Color labelColor
 
Placement placementHint
 
double placementPriority
 
std::map< std::pair< int, int >, const Ieee80211Visualization * > ieee80211Visualizations
 
virtual void initialize (int stage) override
 
virtual void handleParameterChange (const char *name) override
 
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual Ieee80211VisualizationcreateIeee80211Visualization (cModule *networkNode, NetworkInterface *networkInterface, std::string ssid, W power)=0
 
virtual const Ieee80211VisualizationgetIeee80211Visualization (cModule *networkNode, NetworkInterface *networkInterface)
 
virtual void addIeee80211Visualization (const Ieee80211Visualization *ieee80211Visualization)
 
virtual void removeIeee80211Visualization (const Ieee80211Visualization *ieee80211Visualization)
 
virtual void removeAllIeee80211Visualizations ()
 
virtual std::string getIcon (W power) const
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *object, cObject *details) override
 

Additional Inherited Members

- Protected Member Functions inherited from inet::visualizer::VisualizerBase
virtual int numInitStages () const override
 
virtual Coord getPosition (const cModule *networkNode) const
 
virtual Coord getContactPosition (const cModule *networkNode, const Coord &fromPosition, const char *contactMode, double contactSpacing) const
 
virtual Quaternion getOrientation (const cModule *networkNode) const
 
virtual void mapChunks (const Ptr< const Chunk > &chunk, const std::function< void(const Ptr< const Chunk > &, int)> &thunk) const
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Member Function Documentation

◆ addIeee80211Visualization()

void inet::visualizer::Ieee80211VisualizerBase::addIeee80211Visualization ( const Ieee80211Visualization ieee80211Visualization)
protectedvirtual

Reimplemented in inet::visualizer::Ieee80211CanvasVisualizer, and inet::visualizer::Ieee80211OsgVisualizer.

99 {
100  auto key = std::pair<int, int>(ieee80211Visualization->networkNodeId, ieee80211Visualization->interfaceId);
101  ieee80211Visualizations[key] = ieee80211Visualization;
102 }

Referenced by inet::visualizer::Ieee80211OsgVisualizer::addIeee80211Visualization(), inet::visualizer::Ieee80211CanvasVisualizer::addIeee80211Visualization(), and receiveSignal().

◆ createIeee80211Visualization()

virtual Ieee80211Visualization* inet::visualizer::Ieee80211VisualizerBase::createIeee80211Visualization ( cModule *  networkNode,
NetworkInterface networkInterface,
std::string  ssid,
W  power 
)
protectedpure virtual

◆ getIcon()

std::string inet::visualizer::Ieee80211VisualizerBase::getIcon ( W  power) const
protectedvirtual
178 {
179  int index;
180  auto powerDbm = math::mW2dBmW(mW(power).get());
181  if (std::isnan(powerDbm))
182  index = icons.size() - 1;
183  else if (powerDbm < minPowerDbm)
184  index = 0;
185  else if (powerDbm > maxPowerDbm)
186  index = icons.size() - 1;
187  else
188  index = round((icons.size() - 1) * (powerDbm - minPowerDbm) / (maxPowerDbm - minPowerDbm));
189  return icons[index];
190 }

Referenced by inet::visualizer::Ieee80211OsgVisualizer::createIeee80211Visualization(), inet::visualizer::Ieee80211CanvasVisualizer::createIeee80211Visualization(), and inet::visualizer::Ieee80211CanvasVisualizer::refreshDisplay().

◆ getIeee80211Visualization()

const Ieee80211VisualizerBase::Ieee80211Visualization * inet::visualizer::Ieee80211VisualizerBase::getIeee80211Visualization ( cModule *  networkNode,
NetworkInterface networkInterface 
)
protectedvirtual
92 {
93  auto key = std::pair<int, int>(networkNode->getId(), networkInterface->getInterfaceId());
94  auto it = ieee80211Visualizations.find(key);
95  return it == ieee80211Visualizations.end() ? nullptr : it->second;
96 }

Referenced by receiveSignal().

◆ handleParameterChange()

void inet::visualizer::Ieee80211VisualizerBase::handleParameterChange ( const char *  name)
overrideprotectedvirtual
60 {
61  if (!hasGUI()) return;
62  if (name != nullptr) {
63  if (!strcmp(name, "nodeFilter"))
64  nodeFilter.setPattern(par("nodeFilter"));
65  else if (!strcmp(name, "interfaceFilter"))
66  interfaceFilter.setPattern(par("interfaceFilter"));
68  }
69 }

◆ initialize()

void inet::visualizer::Ieee80211VisualizerBase::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::visualizer::VisualizerBase.

Reimplemented in inet::visualizer::Ieee80211CanvasVisualizer, and inet::visualizer::Ieee80211OsgVisualizer.

36 {
38  if (!hasGUI()) return;
39  if (stage == INITSTAGE_LOCAL) {
40  displayAssociations = par("displayAssociations");
41  nodeFilter.setPattern(par("nodeFilter"));
42  interfaceFilter.setPattern(par("interfaceFilter"));
43  minPowerDbm = par("minPower");
44  maxPowerDbm = par("maxPower");
45  const char *iconsAsString = par("icons");
46  cStringTokenizer tokenizer(iconsAsString);
47  while (tokenizer.hasMoreTokens())
48  icons.push_back(tokenizer.nextToken());
49  iconColorSet.parseColors(par("iconColor"));
50  labelFont = cFigure::parseFont(par("labelFont"));
51  labelColor = cFigure::Color(par("labelColor"));
52  placementHint = parsePlacement(par("placementHint"));
53  placementPriority = par("placementPriority");
55  subscribe();
56  }
57 }

Referenced by inet::visualizer::Ieee80211OsgVisualizer::initialize(), and inet::visualizer::Ieee80211CanvasVisualizer::initialize().

◆ preDelete()

void inet::visualizer::Ieee80211VisualizerBase::preDelete ( cComponent *  root)
overrideprotectedvirtual
28 {
29  if (displayAssociations) {
30  unsubscribe();
32  }
33 }

◆ receiveSignal()

void inet::visualizer::Ieee80211VisualizerBase::receiveSignal ( cComponent *  source,
simsignal_t  signal,
cObject *  object,
cObject *  details 
)
overridevirtual
122 {
123 #ifdef INET_WITH_IEEE80211
124  Enter_Method("%s", cComponent::getSignalName(signal));
125 
126  if (signal == l2AssociatedSignal) {
127  auto networkNode = getContainingNode(check_and_cast<cModule *>(source));
128  if (nodeFilter.matches(networkNode)) {
129  auto networkInterface = check_and_cast<NetworkInterface *>(object);
130  auto apInfo = check_and_cast<inet::ieee80211::Ieee80211MgmtSta::ApInfo *>(details);
131  auto ieee80211Visualization = createIeee80211Visualization(networkNode, networkInterface, apInfo->ssid, W(apInfo->rxPower));
132  addIeee80211Visualization(ieee80211Visualization);
133  }
134  }
135  else if (signal == l2DisassociatedSignal) {
136  auto networkNode = getContainingNode(check_and_cast<cModule *>(source));
137  if (nodeFilter.matches(networkNode)) {
138  auto networkInterface = check_and_cast<NetworkInterface *>(object);
139  auto ieee80211Visualization = getIeee80211Visualization(networkNode, networkInterface);
140  if (ieee80211Visualization != nullptr) {
141  removeIeee80211Visualization(ieee80211Visualization);
142  delete ieee80211Visualization;
143  }
144  }
145  }
146  else if (signal == l2ApAssociatedSignal) {
147  auto networkNode = getContainingNode(check_and_cast<cModule *>(source));
148  if (nodeFilter.matches(networkNode)) {
149  // KLUDGE this is the wrong way to lookup the interface and the ssid
150  auto mgmt = check_and_cast<inet::ieee80211::Ieee80211MgmtAp *>(source);
151  auto networkInterface = getContainingNicModule(mgmt);
152  auto ieee80211Visualization = getIeee80211Visualization(networkNode, networkInterface);
153  if (ieee80211Visualization == nullptr) {
154  auto ieee80211Visualization = createIeee80211Visualization(networkNode, networkInterface, mgmt->par("ssid"), W(NaN));
155  addIeee80211Visualization(ieee80211Visualization);
156  }
157  }
158  }
159  else if (signal == l2ApDisassociatedSignal) {
160  auto networkNode = getContainingNode(check_and_cast<cModule *>(source));
161  if (nodeFilter.matches(networkNode)) {
162  // KLUDGE this is the wrong way to lookup the interface
163  auto mgmt = check_and_cast<inet::ieee80211::Ieee80211MgmtAp *>(source);
164  auto networkInterface = getContainingNicModule(mgmt);
165  auto ieee80211Visualization = getIeee80211Visualization(networkNode, networkInterface);
166  if (ieee80211Visualization != nullptr) {
167  removeIeee80211Visualization(ieee80211Visualization);
168  delete ieee80211Visualization;
169  }
170  }
171  }
172  else
173  throw cRuntimeError("Unknown signal");
174 #endif // INET_WITH_IEEE80211
175 }

◆ removeAllIeee80211Visualizations()

void inet::visualizer::Ieee80211VisualizerBase::removeAllIeee80211Visualizations ( )
protectedvirtual
111 {
112  std::vector<const Ieee80211Visualization *> removedIeee80211Visualizations;
113  for (auto it : ieee80211Visualizations)
114  removedIeee80211Visualizations.push_back(it.second);
115  for (auto visualization : removedIeee80211Visualizations) {
116  removeIeee80211Visualization(visualization);
117  delete visualization;
118  }
119 }

Referenced by handleParameterChange(), and preDelete().

◆ removeIeee80211Visualization()

void inet::visualizer::Ieee80211VisualizerBase::removeIeee80211Visualization ( const Ieee80211Visualization ieee80211Visualization)
protectedvirtual

◆ subscribe()

void inet::visualizer::Ieee80211VisualizerBase::subscribe ( )
protectedvirtual

Referenced by initialize().

◆ unsubscribe()

void inet::visualizer::Ieee80211VisualizerBase::unsubscribe ( )
protectedvirtual
80 {
81  // NOTE: lookup the module again because it may have been deleted first
82  auto visualizationSubjectModule = findModuleFromPar<cModule>(par("visualizationSubjectModule"), this);
83  if (visualizationSubjectModule != nullptr) {
88  }
89 }

Referenced by preDelete().

Member Data Documentation

◆ displayAssociations

bool inet::visualizer::Ieee80211VisualizerBase::displayAssociations = false
protected

Referenced by initialize(), and preDelete().

◆ iconColorSet

◆ icons

std::vector<std::string> inet::visualizer::Ieee80211VisualizerBase::icons
protected

Referenced by getIcon(), and initialize().

◆ ieee80211Visualizations

std::map<std::pair<int, int>, const Ieee80211Visualization *> inet::visualizer::Ieee80211VisualizerBase::ieee80211Visualizations
protected

◆ interfaceFilter

InterfaceFilter inet::visualizer::Ieee80211VisualizerBase::interfaceFilter
protected

◆ labelColor

cFigure::Color inet::visualizer::Ieee80211VisualizerBase::labelColor
protected

◆ labelFont

cFigure::Font inet::visualizer::Ieee80211VisualizerBase::labelFont
protected

◆ maxPowerDbm

double inet::visualizer::Ieee80211VisualizerBase::maxPowerDbm = NaN
protected

Referenced by getIcon(), and initialize().

◆ minPowerDbm

double inet::visualizer::Ieee80211VisualizerBase::minPowerDbm = NaN
protected

Referenced by getIcon(), and initialize().

◆ nodeFilter

NetworkNodeFilter inet::visualizer::Ieee80211VisualizerBase::nodeFilter
protected

◆ placementHint

Placement inet::visualizer::Ieee80211VisualizerBase::placementHint
protected

◆ placementPriority

double inet::visualizer::Ieee80211VisualizerBase::placementPriority
protected

The documentation for this class was generated from the following files:
inet::visualizer::Ieee80211VisualizerBase::icons
std::vector< std::string > icons
Definition: Ieee80211VisualizerBase.h:43
inet::visualizer::Ieee80211VisualizerBase::addIeee80211Visualization
virtual void addIeee80211Visualization(const Ieee80211Visualization *ieee80211Visualization)
Definition: Ieee80211VisualizerBase.cc:98
inet::l2ApDisassociatedSignal
simsignal_t l2ApDisassociatedSignal
Definition: Simsignals.cc:20
inet::visualizer::Ieee80211VisualizerBase::displayAssociations
bool displayAssociations
Definition: Ieee80211VisualizerBase.h:38
inet::visualizer::ColorSet::parseColors
void parseColors(const char *colorNames)
Definition: ColorSet.cc:14
inet::getContainingNode
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:40
inet::units::units::W
compose< J, pow< s, -1 > > W
Definition: Units.h:939
inet::l2AssociatedSignal
simsignal_t l2AssociatedSignal
Definition: Simsignals.cc:15
inet::visualizer::parsePlacement
Placement parsePlacement(const char *s)
Definition: Placement.cc:14
inet::visualizer::NetworkNodeFilter::matches
bool matches(const cModule *module) const
Definition: NetworkNodeFilter.cc:19
inet::visualizer::Ieee80211VisualizerBase::placementPriority
double placementPriority
Definition: Ieee80211VisualizerBase.h:48
inet::getContainingNicModule
NetworkInterface * getContainingNicModule(const cModule *from)
Find the nic module (inside the networkNode) containing the given module.
Definition: NetworkInterface.cc:691
inet::visualizer::Ieee80211VisualizerBase::ieee80211Visualizations
std::map< std::pair< int, int >, const Ieee80211Visualization * > ieee80211Visualizations
Definition: Ieee80211VisualizerBase.h:51
inet::units::units::mW
milli< W >::type mW
Definition: Units.h:1080
inet::visualizer::Ieee80211VisualizerBase::labelFont
cFigure::Font labelFont
Definition: Ieee80211VisualizerBase.h:45
inet::l2DisassociatedSignal
simsignal_t l2DisassociatedSignal
Definition: Simsignals.cc:18
inet::visualizer::Ieee80211VisualizerBase::getIeee80211Visualization
virtual const Ieee80211Visualization * getIeee80211Visualization(cModule *networkNode, NetworkInterface *networkInterface)
Definition: Ieee80211VisualizerBase.cc:91
inet::visualizer::Ieee80211VisualizerBase::removeAllIeee80211Visualizations
virtual void removeAllIeee80211Visualizations()
Definition: Ieee80211VisualizerBase.cc:110
inet::visualizer::Ieee80211VisualizerBase::iconColorSet
ColorSet iconColorSet
Definition: Ieee80211VisualizerBase.h:44
inet::visualizer::Ieee80211VisualizerBase::unsubscribe
virtual void unsubscribe()
Definition: Ieee80211VisualizerBase.cc:79
inet::visualizer::Ieee80211VisualizerBase::removeIeee80211Visualization
virtual void removeIeee80211Visualization(const Ieee80211Visualization *ieee80211Visualization)
Definition: Ieee80211VisualizerBase.cc:104
inet::l2ApAssociatedSignal
simsignal_t l2ApAssociatedSignal
Definition: Simsignals.cc:19
inet::visualizer::Ieee80211VisualizerBase::minPowerDbm
double minPowerDbm
Definition: Ieee80211VisualizerBase.h:41
inet::visualizer::NetworkNodeFilter::setPattern
void setPattern(const char *pattern)
Definition: NetworkNodeFilter.cc:14
inet::visualizer::Ieee80211VisualizerBase::interfaceFilter
InterfaceFilter interfaceFilter
Definition: Ieee80211VisualizerBase.h:40
inet::visualizer::InterfaceFilter::setPattern
void setPattern(const char *pattern)
Definition: InterfaceFilter.cc:14
inet::visualizer::Ieee80211VisualizerBase::nodeFilter
NetworkNodeFilter nodeFilter
Definition: Ieee80211VisualizerBase.h:39
NaN
#define NaN
Definition: INETMath.h:91
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::visualizer::Ieee80211VisualizerBase::placementHint
Placement placementHint
Definition: Ieee80211VisualizerBase.h:47
inet::math::round
int round(double d)
Returns an integer that corresponds to rounded double parameter.
Definition: INETMath.h:143
inet::visualizer::Ieee80211VisualizerBase::createIeee80211Visualization
virtual Ieee80211Visualization * createIeee80211Visualization(cModule *networkNode, NetworkInterface *networkInterface, std::string ssid, W power)=0
Enter_Method
#define Enter_Method(...)
Definition: SelfDoc.h:71
inet::DiffservUtil::Color
Color
Definition: DiffservUtil.h:17
inet::visualizer::VisualizerBase::visualizationSubjectModule
cModule * visualizationSubjectModule
Definition: VisualizerBase.h:26
inet::visualizer::Ieee80211VisualizerBase::labelColor
cFigure::Color labelColor
Definition: Ieee80211VisualizerBase.h:46
inet::visualizer::Ieee80211VisualizerBase::subscribe
virtual void subscribe()
Definition: Ieee80211VisualizerBase.cc:71
inet::math::mW2dBmW
double mW2dBmW(double mW)
Convert a mW value to dBmW.
Definition: INETMath.h:168
inet::visualizer::Ieee80211VisualizerBase::maxPowerDbm
double maxPowerDbm
Definition: Ieee80211VisualizerBase.h:42
inet::visualizer::VisualizerBase::initialize
virtual void initialize(int stage) override
Definition: VisualizerBase.cc:23