Files
eden-sim/contrib/tsn/model/frer-base-recovery-function.cc

83 lines
2.4 KiB
C++

#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<Object>()
.SetGroupName("tsn")
.AddConstructor<BaseRecoveryFunction>()
.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;
}
}