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