Skip to content

Commit a257607

Browse files
committed
Visualizer: Fixed medium signal power density visualization when dragging a network node.
1 parent 7d27afa commit a257607

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

src/inet/visualizer/physicallayer/MediumCanvasVisualizer.cc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,9 @@ void MediumCanvasVisualizer::initialize(int stage)
174174
networkNodeVisualization->addAnnotation(spectrogramFigure, spectrogramFigure->getPlotSize(), spectrogramPlacementHint, spectrogramPlacementPriority);
175175
spectrogramFigures[networkNode] = spectrogramFigure;
176176
}
177+
if (displayPowerDensityMaps || displaySpectrums || displaySpectrograms)
178+
if (!networkNode->isSubscribed(IMobility::mobilityStateChangedSignal, this))
179+
networkNode->subscribe(IMobility::mobilityStateChangedSignal, this);
177180
}
178181
}
179182
}
@@ -929,6 +932,8 @@ void MediumCanvasVisualizer::handleRadioAdded(const IRadio *radio)
929932
setSignalArrivalFigure(radio, signalArrivalFigure);
930933
}
931934
}
935+
if (displayPowerDensityMaps || displaySpectrums || displaySpectrograms)
936+
networkNode->subscribe(IMobility::mobilityStateChangedSignal, this);
932937
}
933938
}
934939

@@ -949,6 +954,8 @@ void MediumCanvasVisualizer::handleRadioRemoved(const IRadio *radio)
949954
auto networkNodeVisualization = networkNodeVisualizer->getNetworkNodeVisualization(networkNode);
950955
networkNodeVisualization->removeAnnotation(arrivalFigure);
951956
}
957+
if (displayPowerDensityMaps || displaySpectrums || displaySpectrograms)
958+
networkNode->unsubscribe(IMobility::mobilityStateChangedSignal, this);
952959
}
953960
}
954961

@@ -1090,6 +1097,14 @@ void MediumCanvasVisualizer::handleSignalArrivalEnded(const IReception *receptio
10901097
}
10911098
}
10921099

1100+
void MediumCanvasVisualizer::receiveSignal(cComponent *source, simsignal_t signal, cObject *object, cObject *details)
1101+
{
1102+
if (signal == IMobility::mobilityStateChangedSignal)
1103+
invalidDisplay = true;
1104+
else
1105+
MediumVisualizerBase::receiveSignal(source, signal, object, details);
1106+
}
1107+
10931108
#endif // WITH_RADIO
10941109

10951110
} // namespace visualizer

src/inet/visualizer/physicallayer/MediumCanvasVisualizer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ class INET_API MediumCanvasVisualizer : public MediumVisualizerBase
156156
virtual void handleSignalDepartureEnded(const physicallayer::ITransmission *transmission) override;
157157
virtual void handleSignalArrivalStarted(const physicallayer::IReception *reception) override;
158158
virtual void handleSignalArrivalEnded(const physicallayer::IReception *reception) override;
159+
160+
virtual void receiveSignal(cComponent *source, simsignal_t signal, cObject *object, cObject *details) override;
159161
#endif // WITH_RADIO
160162
};
161163

0 commit comments

Comments
 (0)