When a primary reference source such as a radio clock is connected to the host, it is convenient to incorporate its information into the data base as if the clock were represented as an ordinary peer. In the primary-clock procedure the clock is polled once a minute or so and the returned timecode used to produce a new update for the local clock. When peer.timer decrements to zero for a primary clock peer, the transmit procedure is not called; rather, the radio clock is polled, usually using an ASCII string specified for this purpose. When a valid timecode is received from the radio clock, it is converted to NTP timestamp format and the peer variables updated. The value of peer.leap is set depending on the status of the leap-warning bit in the timecode, if available, or manually by the operator. The value for peer.peeraddr, which will become the value of sys.refid when the clock-update procedure is called, is set to an ASCII string describing the clock type (see Appendix A).
begin primary-clock-update procedure peer.leap <-- "from" radio or operator; /* copy variables */ peer.peeraddr <-- ASCII identifier; peer.rec <-- radio timestamp; peer.reach <-- 1; call clock-filter(sys.clock - peer.rec, 0 , 1 << peer.precision); /* process sample */ call clock-update; /* update local clock */ end primary-clock-update procedure;