Files
eden-sim/contrib/tsn/model/clock.cc

99 lines
1.6 KiB
C++

#include "clock.h"
#include "ns3/log.h"
#include "ns3/simulator.h"
namespace ns3
{
NS_LOG_COMPONENT_DEFINE("Clock");
NS_OBJECT_ENSURE_REGISTERED(Clock);
TypeId
Clock::GetTypeId()
{
static TypeId tid =
TypeId("ns3::Clock")
.SetParent<Object>()
.SetGroupName("tsn")
.AddConstructor<Clock>()
.AddAttribute("Granularity",
"Clock granularity in ns",
TimeValue(Time(NanoSeconds(1))),
MakeTimeAccessor(&Clock::m_granularity),
MakeTimeChecker());
return tid;
}
Clock::Clock()
{
NS_LOG_FUNCTION(this);
}
Clock::~Clock()
{
NS_LOG_FUNCTION(this);
}
Time
Clock::GetLocalTime()
{
NS_LOG_FUNCTION(this);
return GetUncorrectedLocalTime() + m_correctionOffset;
}
Time
Clock::GetUncorrectedLocalTime()
{
NS_LOG_FUNCTION(this);
return Simulator::Now();
}
Time
Clock::GetTimeAt(Time t)
{
NS_LOG_FUNCTION(this);
return t;
}
Time
Clock::GetDuration(Time d)
{
NS_LOG_FUNCTION(this);
return d;
}
void
Clock::UpdateTime(){
NS_LOG_FUNCTION(this);
}
void
Clock::SetOffsetTime(Time offset)
{
NS_LOG_FUNCTION(this);
m_correctionOffset = offset;
TriggerCorrectionCallback();
}
void
Clock::AddClockCorrectionCallback(Callback<void> cb)
{
NS_LOG_FUNCTION(this);
m_callbacks.insert(m_callbacks.end(), cb);
}
void
Clock::TriggerCorrectionCallback()
{
NS_LOG_FUNCTION(this);
for(int i = 0; i < (int)m_callbacks.size(); i++)
{
m_callbacks[i]();
}
}
}