Update README and add contrib dir
This commit is contained in:
83
contrib/tsn/model/clock-fix-precision.cc
Normal file
83
contrib/tsn/model/clock-fix-precision.cc
Normal file
@@ -0,0 +1,83 @@
|
||||
#include "clock-fix-precision.h"
|
||||
|
||||
#include "ns3/log.h"
|
||||
#include "ns3/simulator.h"
|
||||
#include "ns3/uinteger.h"
|
||||
#include <ns3/double.h>
|
||||
|
||||
#include "ns3/clock.h"
|
||||
|
||||
namespace ns3
|
||||
{
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE("FixPrecisionClock");
|
||||
|
||||
NS_OBJECT_ENSURE_REGISTERED(FixPrecisionClock);
|
||||
|
||||
TypeId
|
||||
FixPrecisionClock::GetTypeId()
|
||||
{
|
||||
static TypeId tid =
|
||||
TypeId("ns3::FixPrecisionClock")
|
||||
.SetParent<Clock>()
|
||||
.SetGroupName("tsn")
|
||||
.AddConstructor<FixPrecisionClock>()
|
||||
.AddAttribute("Precision",
|
||||
"Fix precision offset according to the reference clock (i.e. GM)",
|
||||
TimeValue(Time(0)),
|
||||
MakeTimeAccessor(&FixPrecisionClock::m_precision),
|
||||
MakeTimeChecker());
|
||||
return tid;
|
||||
}
|
||||
|
||||
|
||||
FixPrecisionClock::FixPrecisionClock()
|
||||
{
|
||||
NS_LOG_FUNCTION(this);
|
||||
}
|
||||
|
||||
FixPrecisionClock::~FixPrecisionClock()
|
||||
{
|
||||
NS_LOG_FUNCTION(this);
|
||||
}
|
||||
|
||||
void
|
||||
FixPrecisionClock::SetRefClock(Ptr<Clock> refClock)
|
||||
{
|
||||
NS_LOG_FUNCTION(this);
|
||||
m_refClock = refClock;
|
||||
}
|
||||
|
||||
Time
|
||||
FixPrecisionClock::GetLocalTime()
|
||||
{
|
||||
NS_LOG_FUNCTION(this);
|
||||
return GetUncorrectedLocalTime() + m_precision;
|
||||
}
|
||||
|
||||
Time
|
||||
FixPrecisionClock::GetUncorrectedLocalTime()
|
||||
{
|
||||
NS_LOG_FUNCTION(this);
|
||||
|
||||
NS_ASSERT_MSG(m_refClock != nullptr,
|
||||
"Reference clock no set using void VirtualClock::SetRefClock(Ptr<Clock> refClock)");
|
||||
return m_refClock->GetUncorrectedLocalTime();
|
||||
}
|
||||
|
||||
Time
|
||||
FixPrecisionClock::GetTimeAt(Time t)
|
||||
{
|
||||
NS_LOG_FUNCTION(this);
|
||||
return m_precision + m_refClock->GetTimeAt(t);
|
||||
}
|
||||
|
||||
Time
|
||||
FixPrecisionClock::GetDuration(Time d)
|
||||
{
|
||||
NS_LOG_FUNCTION(this);
|
||||
return m_refClock->GetDuration(d);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user