GptpFollowUpInformationTlv

Namespace inet

GptpFollowUpInformationTlv

class

The fields of the Follow_Up information TLV shall be as specified in Table 11-11 and in 11.4.4.3.2 through 11.4.4.3.9. This TLV is a standard organization extension TLV for the Follow_Up message, as specified in 14.3 of IEEE Std 1588-2019. NOTE—The Follow_Up information TLV is different from the CUMULATIVE_RATE_RATIO TLV of IEEE Std 1588- 2019 (see 16.10 and Table 52 of IEEE Std 1588-2019). While both TLVs carry cumulative rate offset information, the Follow_Up information TLV also carries information on the Grandmaster Clock time base, most recent phase change, and most recent frequency change. The CUMULATIVE_RATE_RATIO TLV is not used by gPTP.

Extends

Name Type Description
GptpTlv (unknown -- not in documented files)

Fields

Name Type Description
tlvType
lengthField uint16_t
organizationId uint32_t
organizationSubType uint32_t
rateRatio double

11.4.4.3.6 The value of cumulativeScaledRateOffset is equal to (rateRatio – 1.0) / (2^41), truncated to the next smaller signed integer, where rateRatio is the ratio of the frequency of the Grandmaster Clock to the frequency of the LocalClock entity in the PTP Instance that sends the message.

gmTimeBaseIndicator uint16_t

The value of gmTimeBaseIndicator is the timeBaseIndicator of the ClockSource entity for the current Grandmaster PTP Instance (see 9.2.2.3).

lastGmPhaseChange clocktime_t

The value of lastGmPhaseChange is the time of the current Grandmaster Clock minus the time of the previous Grandmaster Clock, at the time that the current Grandmaster PTP Instance became the Grandmaster PTP Instance. The value is copied from the lastGmPhaseChange member of the MDSyncSend structure whose receipt causes the MD entity to send the Follow_Up message (see 11.2.11).

scaledLastGmFreqChange int32_t

The value of scaledLastGmFreqChange is the fractional frequency offset of the current Grandmaster Clock relative to the previous Grandmaster Clock, at the time that the current Grandmaster PTP Instance became the Grandmaster PTP Instance, or relative to itself prior to the last change in gmTimeBaseIndicator, multiplied by 241 and truncated to the next smaller signed integer. The value is obtained by multiplying the lastGmFreqChange member of MDSyncSend whose receipt causes the MD entity to send the Follow_Up message (see 11.2.11) by 241, and truncating to the next smaller signed integer.

Source code

// The fields of the Follow_Up information TLV shall be as specified in Table 11-11 and in 11.4.4.3.2 through
// 11.4.4.3.9. This TLV is a standard organization extension TLV for the Follow_Up message, as specified in
// 14.3 of IEEE Std 1588-2019.
// NOTE—The Follow_Up information TLV is different from the CUMULATIVE_RATE_RATIO TLV of IEEE Std 1588-
// 2019 (see 16.10 and Table 52 of IEEE Std 1588-2019). While both TLVs carry cumulative rate offset information, the
// Follow_Up information TLV also carries information on the Grandmaster Clock time base, most recent phase change,
// and most recent frequency change. The CUMULATIVE_RATE_RATIO TLV is not used by gPTP.
class GptpFollowUpInformationTlv extends GptpTlv
{
    tlvType = GPTP_FOLLOW_UP_INFORMATION_TLV;
    uint16_t lengthField @bit(16) = B(GPTP_FOLLOW_UP_INFORMATION_TLV_BODYSIZE).get();
    uint32_t organizationId @bit(24) = 0x0080C2;
    uint32_t organizationSubType @bit(24) = 1;
    double rateRatio @bit(32); // 11.4.4.3.6 The value of cumulativeScaledRateOffset is equal to (rateRatio – 1.0) / (2^41), truncated to the next smaller
                               // signed integer, where rateRatio is the ratio of the frequency of the Grandmaster Clock to the frequency of the
                               // LocalClock entity in the PTP Instance that sends the message.
    uint16_t gmTimeBaseIndicator @bit(16); // The value of gmTimeBaseIndicator is the timeBaseIndicator of the ClockSource entity for the current
                                           // Grandmaster PTP Instance (see 9.2.2.3).
    clocktime_t lastGmPhaseChange @bit(96); // The value of lastGmPhaseChange is the time of the current Grandmaster Clock minus the time of the
                                            // previous Grandmaster Clock, at the time that the current Grandmaster PTP Instance became the
                                            // Grandmaster PTP Instance. The value is copied from the lastGmPhaseChange member of the MDSyncSend
                                            // structure whose receipt causes the MD entity to send the Follow_Up message (see 11.2.11).
    int32_t scaledLastGmFreqChange @bit(32); // The value of scaledLastGmFreqChange is the fractional frequency offset of the current Grandmaster Clock
                                             // relative to the previous Grandmaster Clock, at the time that the current Grandmaster PTP Instance became
                                             // the Grandmaster PTP Instance, or relative to itself prior to the last change in gmTimeBaseIndicator,
                                             // multiplied by 241 and truncated to the next smaller signed integer. The value is obtained by multiplying the
                                             // lastGmFreqChange member of MDSyncSend whose receipt causes the MD entity to send the Follow_Up
                                             // message (see 11.2.11) by 241, and truncating to the next smaller signed integer.
}

File: src/inet/linklayer/ieee8021as/GptpPacket.msg