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. |