/** * 本地时钟即将进入PTP_MASTER状态 */ void m1(const RunTimeOpts *rtOpts, PtpClock *ptpClock) { /*Current data set update*/ ptpClock->stepsRemoved = 0; clearTime(&ptpClock->offsetFromMaster); clearTime(&ptpClock->meanPathDelay); copyClockIdentity(ptpClock->parentPortIdentity.clockIdentity, ptpClock->clockIdentity); ptpClock->parentPortIdentity.portNumber = ptpClock->portIdentity.portNumber; ptpClock->parentStats = DEFAULT_PARENTS_STATS; ptpClock->observedParentClockPhaseChangeRate = 0; ptpClock->observedParentOffsetScaledLogVariance = 0; copyClockIdentity(ptpClock->grandmasterIdentity, ptpClock->clockIdentity); ptpClock->grandmasterClockQuality.clockAccuracy = ptpClock->clockQuality.clockAccuracy; ptpClock->grandmasterClockQuality.clockClass = ptpClock->clockQuality.clockClass; ptpClock->grandmasterClockQuality.offsetScaledLogVariance = ptpClock->clockQuality.offsetScaledLogVariance; ptpClock->grandmasterPriority1 = ptpClock->priority1; ptpClock->grandmasterPriority2 = ptpClock->priority2; ptpClock->logMinDelayReqInterval = rtOpts->logMinDelayReqInterval; /*Time Properties data set*/ ptpClock->timePropertiesDS.currentUtcOffsetValid = rtOpts->timeProperties.currentUtcOffsetValid; ptpClock->timePropertiesDS.currentUtcOffset = rtOpts->timeProperties.currentUtcOffset; ptpClock->timePropertiesDS.timeTraceable = rtOpts->timeProperties.timeTraceable; ptpClock->timePropertiesDS.frequencyTraceable = rtOpts->timeProperties.frequencyTraceable; ptpClock->timePropertiesDS.ptpTimescale = rtOpts->timeProperties.ptpTimescale; ptpClock->timePropertiesDS.timeSource = rtOpts->timeProperties.timeSource; if(ptpClock->timePropertiesDS.ptpTimescale && (secondsToMidnight() < rtOpts->leapSecondNoticePeriod)) { ptpClock->timePropertiesDS.leap59 = ptpClock->clockStatus.leapDelete; ptpClock->timePropertiesDS.leap61 = ptpClock->clockStatus.leapInsert; } else { ptpClock->timePropertiesDS.leap59 = FALSE; ptpClock->timePropertiesDS.leap61 = FALSE; } }
float getPauseBeforeMidnight(Integer8 announceInterval) { return ((secondsToMidnight() <= getPauseAfterMidnight(announceInterval)) ? secondsToMidnight() : getPauseAfterMidnight(announceInterval)); }