80 Ptr<SatSignalParameters> packetInterferedWith,
81 Ptr<SatSignalParameters> processedPacket,
87 NS_LOG_FUNCTION(
this);
89 NS_LOG_INFO(
"Removing interference power of packet from Beam[Carrier] "
90 << processedPacket->m_beamId <<
"[" << processedPacket->m_carrierId <<
"] between "
91 << startTime <<
" and " << endTime);
94 double normalizedTime = 0.0;
95 std::vector<std::pair<double, double>> ifPowerPerFragment;
98 oldIfPower = packetInterferedWith->GetInterferencePower();
99 ifPowerPerFragment = packetInterferedWith->GetInterferencePowerPerFragment();
103 oldIfPower = packetInterferedWith->GetInterferencePowerInSatellite();
104 ifPowerPerFragment = packetInterferedWith->GetInterferencePowerInSatellitePerFragment();
107 for (std::pair<double, double>& ifPower : ifPowerPerFragment)
109 normalizedTime += ifPower.first;
110 if (startTime >= normalizedTime)
114 else if (endTime < normalizedTime)
119 ifPower.second -= (isRegenerative ? processedPacket->m_rxPower_W
120 : processedPacket->GetRxPowerInSatellite());
121 if (std::abs(ifPower.second) < std::numeric_limits<double>::epsilon())
123 ifPower.second = 0.0;
126 if (ifPower.second < 0)
128 NS_FATAL_ERROR(
"Negative interference " << ifPower.second);
134 packetInterferedWith->SetInterferencePower(ifPowerPerFragment);
138 packetInterferedWith->SetInterferencePowerInSatellite(ifPowerPerFragment);
141 NS_LOG_INFO(
"Interfered packet ifPower went from "