#include "frer-base-recovery-function.h" #include "ns3/log.h" namespace ns3 { NS_LOG_COMPONENT_DEFINE("BaseRecoveryFunction"); NS_OBJECT_ENSURE_REGISTERED(BaseRecoveryFunction); TypeId BaseRecoveryFunction::GetTypeId() { static TypeId tid = TypeId("ns3::BaseRecoveryFunction") .SetParent() .SetGroupName("tsn") .AddConstructor() .AddAttribute("ResetTimer", "Reset timer duration for recovery algorithm", TimeValue(MilliSeconds(10000)), MakeTimeAccessor(&BaseRecoveryFunction::m_frerSeqRcvyResetMSec), MakeTimeChecker()) .AddAttribute("MinResetTimer", "Min reset timer duration for recovery algorithm", TimeValue(Seconds(0)), MakeTimeAccessor(&BaseRecoveryFunction::m_frerMinSeqRcvyResetMSec), MakeTimeChecker()) .AddAttribute("MaxResetTimer", "Max reset timer duration for recovery algorithm", TimeValue(Seconds(65535)), MakeTimeAccessor(&BaseRecoveryFunction::m_frerMaxSeqRcvyResetMSec), MakeTimeChecker()); return tid; } BaseRecoveryFunction::BaseRecoveryFunction() { NS_LOG_FUNCTION(this); } BaseRecoveryFunction::~BaseRecoveryFunction() { NS_LOG_FUNCTION(this); } uint BaseRecoveryFunction::GetFrerCpsSeqRcvyPassedPackets() { NS_LOG_FUNCTION(this); return m_frerCpsSeqRcvyPassedPackets; } uint BaseRecoveryFunction::GetFrerCpsSeqRcvyDiscardedPackets() { NS_LOG_FUNCTION(this); return m_frerCpsSeqRcvyDiscardedPackets; } bool BaseRecoveryFunction::DoRecovery(uint16_t seqNumber) { NS_LOG_FUNCTION(this); NS_ASSERT_MSG(m_frerSeqRcvyResetMSec >= m_frerMinSeqRcvyResetMSec, "Trying to use a shorter recovery reset timer than " << m_frerMinSeqRcvyResetMSec << "."); NS_ASSERT_MSG(m_frerSeqRcvyResetMSec <= m_frerMaxSeqRcvyResetMSec, "Trying to use a longer recovery reset timer than " << m_frerMaxSeqRcvyResetMSec << "."); return false; } void BaseRecoveryFunction::resetRecoveryFunction() { NS_LOG_FUNCTION(this); NS_LOG_INFO("Reset FRER recovery function !"); m_takeAny = true; } }