rfc9581v4.txt   rfc9581.txt 
skipping to change at line 314 skipping to change at line 314
timestamp with one of these keys into a type provided by the target timestamp with one of these keys into a type provided by the target
platform, care has to be taken to meet its invariants. For example, platform, care has to be taken to meet its invariants. For example,
for C timespec, the fractional part tv_nsec needs to be between 0 for C timespec, the fractional part tv_nsec needs to be between 0
inclusive and 10^9 exclusive, which can be achieved by also adjusting inclusive and 10^9 exclusive, which can be achieved by also adjusting
the base time appropriately. the base time appropriately.
3.4. Keys -1, -13, and 13: Timescale 3.4. Keys -1, -13, and 13: Timescale
Keys -1, -13, and 13 are used to indicate a timescale, where key 13 Keys -1, -13, and 13 are used to indicate a timescale, where key 13
is critical. Keys -1 and -13 have identical semantics (they are both is critical. Keys -1 and -13 have identical semantics (they are both
assigned as key -1 was chosen first and then, when key 13 was added, assigned because key -1 was chosen first and then, when key 13 was
it appeared desirable to have a negative equivalent). Each extended added, it appeared desirable to have a negative equivalent). Each
time data item MUST NOT contain more than one of these keys. The extended time data item MUST NOT contain more than one of these keys.
value 0 indicates UTC, with the POSIX epoch [TIME_T]; the value 1
The value 0 indicates UTC, with the POSIX epoch [TIME_T]; the value 1
indicates TAI, with the Precision Time Protocol (PTP) epoch (1 indicates TAI, with the Precision Time Protocol (PTP) epoch (1
January 1970 00:00:00 TAI, see [IEEE1588-2019] or [IEEE1588-2008]). January 1970 00:00:00 TAI, see [IEEE1588-2019] or [IEEE1588-2008]).
$$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE) $$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE)
$$ETIME-ELECTIVE //= (-13 => $ETIME-TIMESCALE) $$ETIME-ELECTIVE //= (-13 => $ETIME-TIMESCALE)
$$ETIME-CRITICAL //= (13 => $ETIME-TIMESCALE) $$ETIME-CRITICAL //= (13 => $ETIME-TIMESCALE)
$ETIME-TIMESCALE /= &(etime-utc: 0) $ETIME-TIMESCALE /= &(etime-utc: 0)
$ETIME-TIMESCALE /= &(etime-tai: 1) $ETIME-TIMESCALE /= &(etime-tai: 1)
skipping to change at line 354 skipping to change at line 355
Figure 2: Converting Common Offset Timescales Figure 2: Converting Common Offset Timescales
| Editor's note: This initial set of timescales was deliberately | Editor's note: This initial set of timescales was deliberately
| chosen to be frugal, as the specification of the tag provides | chosen to be frugal, as the specification of the tag provides
| an extension point where additional timescales can be | an extension point where additional timescales can be
| registered at any time. Registrations are clearly needed for | registered at any time. Registrations are clearly needed for
| earth-referenced timescales (such as UT1 and TT), as well as | earth-referenced timescales (such as UT1 and TT), as well as
| possibly for specific realizations of abstract timescales (such | possibly for specific realizations of abstract timescales (such
| as TAI(USNO), the specific realization obtained at the United | as TAI(USNO), the specific realization obtained at the United
| States Naval Observatory), which is more accurate as a constant | States Naval Observatory, which is more accurate as a constant
| offset basis for GPS times). While the registration process | offset basis for GPS times). While the registration process
| itself is trivial, these registrations need to be made based on | itself is trivial, these registrations need to be made based on
| a solid specification of their actual definition. | a solid specification of their actual definition.
3.5. Clock Quality 3.5. Clock Quality
A number of keys are defined to indicate the quality of clock that A number of keys are defined to indicate the quality of clock that
was used to determine the point in time. was used to determine the point in time.
The first three are analogous to clock-quality-grouping in [RFC8575], The first three are analogous to clock-quality-grouping in [RFC8575],
skipping to change at line 413 skipping to change at line 414
3.5.3. OffsetScaledLogVariance (Key -5) 3.5.3. OffsetScaledLogVariance (Key -5)
Key -5 (OffsetScaledLogVariance) can be used to represent the Key -5 (OffsetScaledLogVariance) can be used to represent the
variance exhibited by the clock when it has lost its synchronization variance exhibited by the clock when it has lost its synchronization
with an external reference clock. The details for the computation of with an external reference clock. The details for the computation of
this characteristic are defined in Section 7.6.3 of [IEEE1588-2019] this characteristic are defined in Section 7.6.3 of [IEEE1588-2019]
and the same section in [IEEE1588-2008]. and the same section in [IEEE1588-2008].
3.5.4. Uncertainty (Key -7) 3.5.4. Uncertainty (Key -7)
Key -7 (Uncertainty) can be used to represent a known measurement of Key -7 (Uncertainty) can be used to represent a known uncertainty of
uncertainty for the clock as a numeric value in seconds or as a measurement for the clock as a numeric value in seconds or as a
duration (Section 4). duration (Section 4).
For this document, uncertainty is defined as in Section 2.2.3 of For this document, uncertainty is defined as in Section 2.2.3 of
[GUM]: "parameter, associated with the result of a measurement, that [GUM]: "parameter, associated with the result of a measurement, that
characterizes the dispersion of the values that could reasonably be characterizes the dispersion of the values that could reasonably be
attributed to the measurand". More specifically, the value for this attributed to the measurand". More specifically, the value for this
key represents the expanded uncertainty for k = 2 (Section 6.2.1 of key represents the expanded uncertainty for k = 2 (Section 6.2.1 of
[GUM]) in seconds. [GUM]) in seconds.
Note that the additional information that can be meaningfully Note that the additional information that can be meaningfully
skipping to change at line 633 skipping to change at line 634
duration: ~Duration) duration: ~Duration)
]) ])
6. CDDL Type Names 6. CDDL Type Names
When detailed validation is not needed, the type names defined in When detailed validation is not needed, the type names defined in
Figure 5 are recommended: Figure 5 are recommended:
etime = #6.1001({* (int/tstr) => any}) etime = #6.1001({* (int/tstr) => any})
duration = #6.1002({* (int/tstr) => any}) duration = #6.1002({* (int/tstr) => any})
period = #6.1003([~etime/null, ~etime/null, ~duration/null]) period = #6.1003([~etime/null, ~etime/null, ?~duration])
Figure 5: Recommended Type Names for CDDL Figure 5: Recommended Type Names for CDDL
7. IANA Considerations 7. IANA Considerations
7.1. CBOR Tags 7.1. CBOR Tags
In the "CBOR Tags" registry [IANA.cbor-tags], IANA has allocated the In the "CBOR Tags" registry [IANA.cbor-tags], IANA has allocated the
tags in Table 2. tags in Table 2.
skipping to change at line 663 skipping to change at line 664
Table 2: Values for Tags Table 2: Values for Tags
IANA has updated the "Data Item" column for tag 1003 from "map" to IANA has updated the "Data Item" column for tag 1003 from "map" to
"array". "array".
7.2. Timescales Registry 7.2. Timescales Registry
Per this specification, IANA has created a new "Timescales" registry Per this specification, IANA has created a new "Timescales" registry
within the "Concise Binary Object Representation (CBOR) Tags" within the "Concise Binary Object Representation (CBOR) Tags"
registry group [IANA.cbor-tags]. The registration procedure is both registry group [IANA.cbor-tags]. The registration procedure requires
"Expert Review" and "RFC Required" (Sections 4.5 and 4.7 of RFC 8126 both "Expert Review" and "RFC Required" (Sections 4.5 and 4.7 of RFC
[BCP26], respectively). 8126 [BCP26], respectively).
Each entry needs to provide a timescale name (a sequence of uppercase Each entry needs to provide a timescale name (a sequence of uppercase
ASCII characters and digits, where a digit may not occur at the ASCII characters and digits, where a digit may not occur at the
start: [A-Z][A-Z0-9]*), a value (CBOR unsigned integer, uint, start: [A-Z][A-Z0-9]*), a value (CBOR unsigned integer, uint,
0..18446744073709551615), a brief description of the semantics, and a 0..18446744073709551615), a brief description of the semantics, and a
specification reference (RFC). The initial contents are shown in specification reference (RFC). The initial contents are shown in
Table 3. Table 3.
+===========+=======+======================+===========+ +===========+=======+======================+===========+
| Timescale | Value | Semantics | Reference | | Timescale | Value | Semantics | Reference |
skipping to change at line 994 skipping to change at line 995
suffix-value = 1*alphanum suffix-value = 1*alphanum
alphanum = ALPHA / DIGIT alphanum = ALPHA / DIGIT
lcalpha = %x61-7A lcalpha = %x61-7A
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9 DIGIT = %x30-39 ; 0-9
' ; extracted from [RFC9557] ' ; extracted from [RFC9557]
Duration = #6.1002(etime-detailed) Duration = #6.1002(etime-detailed)
Period = #6.1003([ simple-Period = #6.1003([
start: ~Etime / null start: ~Etime / null
end: ~Etime / null end: ~Etime / null
? duration: ~Duration / null ? duration: ~Duration
]) ])
clumsy-Period = #6.1003([ Period = #6.1003([
(start: ~Etime, (start: ~Etime,
((end: ~Etime, ((end: ~Etime) //
? duration: null) //
(end: null, (end: null,
duration: ~Duration))) // duration: ~Duration))) //
(start: null, (start: null,
end: ~Etime, end: ~Etime,
duration: ~Duration) duration: ~Duration)
]) ])
etime = #6.1001({* (int/tstr) => any}) etime = #6.1001({* (int/tstr) => any})
duration = #6.1002({* (int/tstr) => any}) duration = #6.1002({* (int/tstr) => any})
period = #6.1003([~etime/null, ~etime/null, ~duration/null]) period = #6.1003([~etime/null, ~etime/null, ?~duration])
Figure 6: Collected CDDL Rules from This Specification Figure 6: Collected CDDL Rules from This Specification
Acknowledgements Acknowledgements
The authors would like to acknowledge the many comments from members The authors would like to acknowledge the many comments from members
of the CBOR WG, Francesca Palombini for her AD review, and Thomas of the CBOR WG, Francesca Palombini for her AD review, Thomas Fossati
Fossati and Qin Wu for their directorate reviews. and Qin Wu for their directorate reviews, and Rohan Mahy for one more
review late in the process.
Authors' Addresses Authors' Addresses
Carsten Bormann Carsten Bormann
Universität Bremen TZI Universität Bremen TZI
Postfach 330440 Postfach 330440
D-28359 Bremen D-28359 Bremen
Germany Germany
Phone: +49-421-218-63921 Phone: +49-421-218-63921
Email: cabo@tzi.org Email: cabo@tzi.org
 End of changes. 11 change blocks. 
19 lines changed or deleted 20 lines changed or added

This html diff was produced by rfcdiff 1.48.