Set mobility model for node instead of net device

This commit is contained in:
Tim Schubert 2020-07-15 22:18:30 +02:00
parent f34ca7fafd
commit 6c154b6d60
5 changed files with 11 additions and 28 deletions

View file

@ -117,8 +117,8 @@ MockChannel::GetDelay (Ptr<const MockNetDevice> src, Ptr<const MockNetDevice> ds
{ {
NS_LOG_DEBUG ("Get delay from " << src << " to " << dst); NS_LOG_DEBUG ("Get delay from " << src << " to " << dst);
Ptr<MobilityModel> modSrc = src->GetMobilityModel (); Ptr<MobilityModel> modSrc = src->GetNode ()->GetObject<MobilityModel> ();
Ptr<MobilityModel> modDst = dst->GetMobilityModel (); Ptr<MobilityModel> modDst = dst->GetNode ()->GetObject<MobilityModel> ();
Time propagationDelay = m_propagationDelay->GetDelay (modSrc, modDst); Time propagationDelay = m_propagationDelay->GetDelay (modSrc, modDst);
@ -163,7 +163,7 @@ MockChannel::Deliver (
Time delay = GetDelay (src, dst, txTime); Time delay = GetDelay (src, dst, txTime);
/* Check if there is LOS between the source and destination */ /* Check if there is LOS between the source and destination */
if (GetPropagationLoss ()->CalcRxPower(1, src->GetMobilityModel(), dst->GetMobilityModel()) > 0) if (GetPropagationLoss ()->CalcRxPower(1, src->GetNode ()->GetObject<MobilityModel> (), dst->GetNode ()->GetObject<MobilityModel> ()) > 0)
{ {
Simulator::ScheduleWithContext (dst->GetNode ()->GetId (), Simulator::ScheduleWithContext (dst->GetNode ()->GetId (),
delay, delay,

View file

@ -78,11 +78,6 @@ MockNetDevice::GetTypeId (void)
PointerValue (), PointerValue (),
MakePointerAccessor (&MockNetDevice::m_queue), MakePointerAccessor (&MockNetDevice::m_queue),
MakePointerChecker<Queue<Packet> > ()) MakePointerChecker<Queue<Packet> > ())
.AddAttribute ("MobilityModel", "The mobility model of the device",
PointerValue (),
MakePointerAccessor (&MockNetDevice::SetMobilityModel,
&MockNetDevice::GetMobilityModel),
MakePointerChecker<MobilityModel> ())
// //
// Trace sources at the "top" of the net device, where packets transition // Trace sources at the "top" of the net device, where packets transition
// to/from higher layers. // to/from higher layers.
@ -713,19 +708,6 @@ MockNetDevice::EtherToPpp (uint16_t proto)
return 0; return 0;
} }
Ptr<MobilityModel>
MockNetDevice::GetMobilityModel (void) const
{
return m_mobilityModel;
}
void
MockNetDevice::SetMobilityModel (Ptr<MobilityModel> model)
{
NS_LOG_FUNCTION (this);
m_mobilityModel = model;
}
bool bool
MockNetDevice::IsPointToPoint() const MockNetDevice::IsPointToPoint() const
{ {

View file

@ -195,8 +195,6 @@ public:
virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb); virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
virtual bool SupportsSendFrom (void) const; virtual bool SupportsSendFrom (void) const;
Ptr<MobilityModel> GetMobilityModel (void) const;
void SetMobilityModel (Ptr<MobilityModel> model);
void NotifyLinkDown (void); void NotifyLinkDown (void);
protected: protected:
@ -477,8 +475,6 @@ private:
Ptr<Packet> m_currentPkt; //!< Current packet processed Ptr<Packet> m_currentPkt; //!< Current packet processed
Ptr<MobilityModel> m_mobilityModel;
/** /**
* \brief PPP to Ethernet protocol number mapping * \brief PPP to Ethernet protocol number mapping
* \param protocol A PPP protocol number * \param protocol A PPP protocol number

View file

@ -42,7 +42,6 @@ IslMockChannelTransmitUnknownTestCase::DoRun (void)
Time txTime; Time txTime;
channel->SetAttribute ("PropagationDelay", StringValue ("ns3::ConstantSpeedPropagationDelayModel")); channel->SetAttribute ("PropagationDelay", StringValue ("ns3::ConstantSpeedPropagationDelayModel"));
channel->SetAttribute ("PropagationLoss", StringValue ("ns3::IslPropagationLossModel")); channel->SetAttribute ("PropagationLoss", StringValue ("ns3::IslPropagationLossModel"));
dev->SetAttribute ("MobilityModel", StringValue ("ns3::WaypointMobilityModel"));
bool result = channel->TransmitStart (p, srcId, destAddr, txTime); bool result = channel->TransmitStart (p, srcId, destAddr, txTime);
NS_TEST_ASSERT_MSG_EQ (result, false, "Unknown destination fails to deliver"); NS_TEST_ASSERT_MSG_EQ (result, false, "Unknown destination fails to deliver");
@ -78,15 +77,17 @@ IslMockChannelTransmitKnownTestCase::DoRun (void)
Ptr<Packet> p = Ptr<Packet>(packet); Ptr<Packet> p = Ptr<Packet>(packet);
Ptr<Node> srcNode = CreateObject<Node> (); Ptr<Node> srcNode = CreateObject<Node> ();
Ptr<ConstantPositionMobilityModel> loc = CreateObject<ConstantPositionMobilityModel> ();
srcNode->AggregateObject (loc);
Ptr<MockNetDevice> srcDev = CreateObject<MockNetDevice> (); Ptr<MockNetDevice> srcDev = CreateObject<MockNetDevice> ();
srcDev->SetNode (srcNode); srcDev->SetNode (srcNode);
srcDev->SetAttribute ("MobilityModel", StringValue ("ns3::WaypointMobilityModel"));
int32_t srcId = channel->Attach (srcDev); int32_t srcId = channel->Attach (srcDev);
Ptr<Node> dstNode = CreateObject<Node> (); Ptr<Node> dstNode = CreateObject<Node> ();
loc = CreateObject<ConstantPositionMobilityModel> ();
dstNode->AggregateObject (loc);
Ptr<MockNetDevice> dstDev = CreateObject<MockNetDevice> (); Ptr<MockNetDevice> dstDev = CreateObject<MockNetDevice> ();
dstDev->SetNode (dstNode); dstDev->SetNode (dstNode);
dstDev->SetAttribute ("MobilityModel", StringValue ("ns3::WaypointMobilityModel"));
channel->Attach (dstDev); channel->Attach (dstDev);
Address destAddr = dstDev->GetAddress (); Address destAddr = dstDev->GetAddress ();

View file

@ -79,6 +79,8 @@ LeoMockChannelTransmitKnownTestCase::DoRun (void)
Ptr<Packet> p = Ptr<Packet>(packet); Ptr<Packet> p = Ptr<Packet>(packet);
Ptr<Node> srcNode = CreateObject<Node> (); Ptr<Node> srcNode = CreateObject<Node> ();
Ptr<ConstantPositionMobilityModel> loc = CreateObject<ConstantPositionMobilityModel> ();
srcNode->AggregateObject (loc);
Ptr<LeoMockNetDevice> srcDev = CreateObject<LeoMockNetDevice> (); Ptr<LeoMockNetDevice> srcDev = CreateObject<LeoMockNetDevice> ();
srcDev->SetNode (srcNode); srcDev->SetNode (srcNode);
srcDev->SetAttribute ("MobilityModel", StringValue ("ns3::ConstantPositionMobilityModel")); srcDev->SetAttribute ("MobilityModel", StringValue ("ns3::ConstantPositionMobilityModel"));
@ -86,6 +88,8 @@ LeoMockChannelTransmitKnownTestCase::DoRun (void)
int32_t srcId = channel->Attach (srcDev); int32_t srcId = channel->Attach (srcDev);
Ptr<Node> dstNode = CreateObject<Node> (); Ptr<Node> dstNode = CreateObject<Node> ();
loc = CreateObject<ConstantPositionMobilityModel> ();
dstNode->AggregateObject (loc);
Ptr<LeoMockNetDevice> dstDev = CreateObject<LeoMockNetDevice> (); Ptr<LeoMockNetDevice> dstDev = CreateObject<LeoMockNetDevice> ();
dstDev->SetNode (dstNode); dstDev->SetNode (dstNode);
dstDev->SetAttribute ("MobilityModel", StringValue ("ns3::WaypointMobilityModel")); dstDev->SetAttribute ("MobilityModel", StringValue ("ns3::WaypointMobilityModel"));