diff --git a/model/isl-mock-channel.cc b/model/isl-mock-channel.cc index 1bc86b1..a7e438c 100644 --- a/model/isl-mock-channel.cc +++ b/model/isl-mock-channel.cc @@ -67,14 +67,13 @@ IslMockChannel::TransmitStart ( if (dst == nullptr) { - if (src->IsBroadcast () || src->IsMulticast ()) + if (Mac48Address::ConvertFrom (destAddr).IsBroadcast () || Mac48Address::ConvertFrom (destAddr).IsBroadcast ()) // try to deliver to every node in LOS { for (size_t i = 0; i < GetNDevices (); i ++) { if (i == srcId) continue; dst = DynamicCast (GetDevice (i)); - // TODO check LOS using mobility model Deliver (p, src, dst, txTime); } return true; diff --git a/model/isl-propagation-loss-model.cc b/model/isl-propagation-loss-model.cc index 2d123ef..9b379a5 100644 --- a/model/isl-propagation-loss-model.cc +++ b/model/isl-propagation-loss-model.cc @@ -83,17 +83,13 @@ IslPropagationLossModel::DoCalcRxPower (double txPowerDbm, Ptr a, Ptr b) const { - - // TODO perform line-earth intersection (ray tracing or based on earth - // curvature + distance) - // primitivec cut-of at 1000 km if (!GetLos (a, b)) { - return 0; + return 0.0; } - double rxc = 0;//-m_variable->GetValue (); + double rxc = 0.0;//-m_variable->GetValue (); NS_LOG_DEBUG ("attenuation coefficient="< p, return false; } - // TODO deliver only to devices in the same beam for (DeviceIndex::iterator it = dests->begin (); it != dests->end(); it ++) { Deliver (p, srcDev, it->second, txTime); diff --git a/model/leo-propagation-loss-model.cc b/model/leo-propagation-loss-model.cc index 40cf948..613e2e1 100644 --- a/model/leo-propagation-loss-model.cc +++ b/model/leo-propagation-loss-model.cc @@ -61,13 +61,12 @@ LeoPropagationLossModel::DoCalcRxPower (double txPowerDbm, Ptr a, Ptr b) const { - // TODO create attributes for max distance and angle if (a->GetDistanceFrom (b) > m_cutoffDistance && GetAngle (a, b) > m_cutoffAngle) { - return 0; + return 0.0; } - double rxc = 0;//-m_variable->GetValue (); + double rxc = 0.0;//-m_variable->GetValue (); //NS_LOG_DEBUG ("attenuation coefficient="<GetAddress () << dst->GetAddress () << txTime); + double rxPower = GetPropagationLoss ()->CalcRxPower (1.0, src, dst); + + if (rxPower == 0.0) + { + return false; + } + Time delay = GetDelay (src, dst, txTime); Simulator::ScheduleWithContext (dst->GetNode ()->GetId (), diff --git a/model/mock-net-device.cc b/model/mock-net-device.cc index fb9ea5b..ea70150 100644 --- a/model/mock-net-device.cc +++ b/model/mock-net-device.cc @@ -578,15 +578,11 @@ MockNetDevice::AddLinkChangeCallback (Callback callback) m_linkChangeCallbacks.ConnectWithoutContext (callback); } -// -// This is a point-to-point device, so every transmission is a broadcast to -// all of the devices on the network. -// bool MockNetDevice::IsBroadcast (void) const { NS_LOG_FUNCTION (this); - return true; + return false; } // @@ -605,7 +601,7 @@ bool MockNetDevice::IsMulticast (void) const { NS_LOG_FUNCTION (this); - return true; + return false; } Address