Use the management message memory layout for the timePropertiesDS.
Reforming the data structure in this way will greatly simplify the implementation of the management message for this data set. Signed-off-by: Richard Cochran <richardcochran@gmail.com>master
parent
61e1861e27
commit
aa6708d09a
24
clock.c
24
clock.c
|
@ -331,12 +331,11 @@ static void clock_update_grandmaster(struct clock *c)
|
||||||
pds->grandmasterPriority2 = c->dds.priority2;
|
pds->grandmasterPriority2 = c->dds.priority2;
|
||||||
c->dad.path_length = 0;
|
c->dad.path_length = 0;
|
||||||
c->tds.currentUtcOffset = CURRENT_UTC_OFFSET;
|
c->tds.currentUtcOffset = CURRENT_UTC_OFFSET;
|
||||||
c->tds.currentUtcOffsetValid = FALSE;
|
if (c->utc_timescale) {
|
||||||
c->tds.leap61 = FALSE;
|
c->tds.flags = 0;
|
||||||
c->tds.leap59 = FALSE;
|
} else {
|
||||||
c->tds.timeTraceable = FALSE;
|
c->tds.flags = PTP_TIMESCALE;
|
||||||
c->tds.frequencyTraceable = FALSE;
|
}
|
||||||
c->tds.ptpTimescale = c->utc_timescale ? FALSE : TRUE;
|
|
||||||
c->tds.timeSource = INTERNAL_OSCILLATOR;
|
c->tds.timeSource = INTERNAL_OSCILLATOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -351,14 +350,9 @@ static void clock_update_slave(struct clock *c)
|
||||||
pds->grandmasterPriority1 = msg->announce.grandmasterPriority1;
|
pds->grandmasterPriority1 = msg->announce.grandmasterPriority1;
|
||||||
pds->grandmasterPriority2 = msg->announce.grandmasterPriority2;
|
pds->grandmasterPriority2 = msg->announce.grandmasterPriority2;
|
||||||
c->tds.currentUtcOffset = msg->announce.currentUtcOffset;
|
c->tds.currentUtcOffset = msg->announce.currentUtcOffset;
|
||||||
c->tds.currentUtcOffsetValid = field_is_set(msg, 1, UTC_OFF_VALID);
|
c->tds.flags = msg->header.flagField[1];
|
||||||
c->tds.leap61 = field_is_set(msg, 1, LEAP_61);
|
|
||||||
c->tds.leap59 = field_is_set(msg, 1, LEAP_59);
|
|
||||||
c->tds.timeTraceable = field_is_set(msg, 1, TIME_TRACEABLE);
|
|
||||||
c->tds.frequencyTraceable = field_is_set(msg, 1, FREQ_TRACEABLE);
|
|
||||||
c->tds.ptpTimescale = field_is_set(msg, 1, PTP_TIMESCALE);
|
|
||||||
c->tds.timeSource = msg->announce.timeSource;
|
c->tds.timeSource = msg->announce.timeSource;
|
||||||
if (!c->tds.ptpTimescale) {
|
if (!(c->tds.flags & PTP_TIMESCALE)) {
|
||||||
pr_warning("foreign master not using PTP timescale");
|
pr_warning("foreign master not using PTP timescale");
|
||||||
}
|
}
|
||||||
if (c->tds.currentUtcOffset < CURRENT_UTC_OFFSET) {
|
if (c->tds.currentUtcOffset < CURRENT_UTC_OFFSET) {
|
||||||
|
@ -371,9 +365,9 @@ static void clock_utc_correct(struct clock *c)
|
||||||
struct timespec offset;
|
struct timespec offset;
|
||||||
if (!c->utc_timescale)
|
if (!c->utc_timescale)
|
||||||
return;
|
return;
|
||||||
if (!c->tds.ptpTimescale)
|
if (!(c->tds.flags & PTP_TIMESCALE))
|
||||||
return;
|
return;
|
||||||
if (c->tds.currentUtcOffsetValid && c->tds.timeTraceable) {
|
if (c->tds.flags & UTC_OFF_VALID && c->tds.flags & TIME_TRACEABLE) {
|
||||||
offset.tv_sec = c->tds.currentUtcOffset;
|
offset.tv_sec = c->tds.currentUtcOffset;
|
||||||
} else if (c->tds.currentUtcOffset > CURRENT_UTC_OFFSET) {
|
} else if (c->tds.currentUtcOffset > CURRENT_UTC_OFFSET) {
|
||||||
offset.tv_sec = c->tds.currentUtcOffset;
|
offset.tv_sec = c->tds.currentUtcOffset;
|
||||||
|
|
9
ds.h
9
ds.h
|
@ -84,14 +84,9 @@ struct parent_ds {
|
||||||
|
|
||||||
struct timePropertiesDS {
|
struct timePropertiesDS {
|
||||||
Integer16 currentUtcOffset;
|
Integer16 currentUtcOffset;
|
||||||
Boolean leap61;
|
UInteger8 flags;
|
||||||
Boolean leap59;
|
|
||||||
Boolean currentUtcOffsetValid;
|
|
||||||
Boolean ptpTimescale;
|
|
||||||
Boolean timeTraceable;
|
|
||||||
Boolean frequencyTraceable;
|
|
||||||
Enumeration8 timeSource;
|
Enumeration8 timeSource;
|
||||||
};
|
} PACKED;
|
||||||
|
|
||||||
struct port_defaults {
|
struct port_defaults {
|
||||||
Integer8 logAnnounceInterval;
|
Integer8 logAnnounceInterval;
|
||||||
|
|
13
port.c
13
port.c
|
@ -669,18 +669,7 @@ static int port_tx_announce(struct port *p)
|
||||||
msg->header.control = CTL_OTHER;
|
msg->header.control = CTL_OTHER;
|
||||||
msg->header.logMessageInterval = p->logAnnounceInterval;
|
msg->header.logMessageInterval = p->logAnnounceInterval;
|
||||||
|
|
||||||
if (tp->leap61)
|
msg->header.flagField[1] = tp->flags;
|
||||||
msg->header.flagField[1] |= LEAP_61;
|
|
||||||
if (tp->leap59)
|
|
||||||
msg->header.flagField[1] |= LEAP_59;
|
|
||||||
if (tp->currentUtcOffsetValid)
|
|
||||||
msg->header.flagField[1] |= UTC_OFF_VALID;
|
|
||||||
if (tp->ptpTimescale)
|
|
||||||
msg->header.flagField[1] |= PTP_TIMESCALE;
|
|
||||||
if (tp->timeTraceable)
|
|
||||||
msg->header.flagField[1] |= TIME_TRACEABLE;
|
|
||||||
if (tp->frequencyTraceable)
|
|
||||||
msg->header.flagField[1] |= FREQ_TRACEABLE;
|
|
||||||
|
|
||||||
msg->announce.currentUtcOffset = tp->currentUtcOffset;
|
msg->announce.currentUtcOffset = tp->currentUtcOffset;
|
||||||
msg->announce.grandmasterPriority1 = dad->pds.grandmasterPriority1;
|
msg->announce.grandmasterPriority1 = dad->pds.grandmasterPriority1;
|
||||||
|
|
Loading…
Reference in New Issue