Most of this code is originally from refclock_wwvb.c with thanks. Any mistakes are mine. Any improvements are welcome.
The Model 320 timecode format is:SQRYYYYDDD+HH:MM:SS.mmLT where: S = 'S' -- sync'd in last hour, '0'-'9' - hours x 10 since last update, else '?' Q = Number of correlating time-frames, from 0 to 5 R = 'R' -- reception in progress, 'N' -- Noisy reception, ' ' -- standby mode YYYY = year from 1990 to 2089 DDD = current day from 1 to 366 + = '+' if current year is a leap year, else ' ' HH = UTC hour 0 to 23 MM = Minutes of current hour from 0 to 59 SS = Seconds of current minute from 0 to 59 mm = 10's milliseconds of the current second from 00 to 99 L = Leap second pending at end of month -- 'I' = inset, 'D'=delete T = DST <-> STD transition indicators Note that this driver does not do anything with the T flag. The M320 also has a 'U' command which returns UT1 correction information. It is not used in this driver.
The Model 33x timecode format is:
S9+D 00 YYYY+DDDUTCS HH:MM:SSl+5
Where:
S = sync indicator S insync N not in sync
the sync flag is WWVB decoder sync
nothing to do with time being correct
9+ = signal level 0 thru 9+ If over 9 indicated as 9+
D = data bit ( fun to watch but useless ;-)
space
00 = hours since last GOOD WWVB frame sync
space
YYYY = current year
+ = leap year indicator
DDD = day of year
UTC = timezone (always UTC)
S = daylight savings indicator
space
HH = hours
: = This is the REAL in sync indicator (: = insync)
MM = minutes
: = : = in sync ? = NOT in sync
SS = seconds
L = leap second flag
+5 = UT1 correction (sign + digit ))
This driver ignores UT1 correction,DST indicator,Leap year
and signal level.
Fudge factors flag1 polling enable (1=poll 0=no poll)