summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/html/parsedata.htm
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/html/parsedata.htm')
-rw-r--r--contrib/ntp/html/parsedata.htm407
1 files changed, 407 insertions, 0 deletions
diff --git a/contrib/ntp/html/parsedata.htm b/contrib/ntp/html/parsedata.htm
new file mode 100644
index 0000000..a756079
--- /dev/null
+++ b/contrib/ntp/html/parsedata.htm
@@ -0,0 +1,407 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN">
+<TITLE>NTP PARSE clock data formats</TITLE>
+<h1>NTP PARSE clock data formats</h1>
+
+<p>The parse driver currently supports several clocks with different
+query mechanisms. In order for you to find a sample that might be
+similar to a clock you might want to integrate into parse i'll sum
+up the major features of the clocks (this information is distributed
+in the parse/clk_*.c and ntpd/refclock_parse.c files).
+
+<hr>
+<h2>Meinberg clocks</h2>
+<pre>
+Meinberg: start=&lt;STX&gt;, end=&lt;ETX&gt;, sync on start
+ pattern="\2D: . . ;T: ;U: . . ; \3"
+ pattern="\2 . . ; ; : : ; \3"
+ pattern="\2 . . ; ; : : ; : ; ; . . "
+</pre>
+ <p>
+ Meinberg is a german manufacturer of time code receivers. Those clocks
+ have a pretty common output format in the stock version. In order to
+ support NTP Meinberg was so kind to produce some special versions of
+ the firmware for the use with NTP. So, if you are going to use a
+ Meinberg clock please ask whether there is a special Uni Erlangen
+ version.
+ You can reach <A HREF="http://www.meinberg.de/">Meinberg</A> via the Web.
+ Information can also be ordered via eMail from <A HREF="mailto: info@meinberg.de">info@meinberg.de</A>
+
+ <p>
+ General characteristics:
+ <br>
+ Meinberg clocks primarily output pulse per second and a describing
+ ASCII string. This string can be produced in two modes. either upon
+ the reception of a question mark or every second. NTP uses the latter
+ mechanism. The DCF77 variants have a pretty good relationship between
+ RS232 time code and the PPS signal while the GPS receiver has no fixed
+ timeing between the datagram and the pulse (you need to use PPS with
+ GPS!) on DCF77 you might get away without the PPS signal.
+ <pre>
+ The preferred tty setting for Meinberg is:
+ CFLAG (B9600|CS7|PARENB|CREAD|HUPCL)
+ IFLAG (IGNBRK|IGNPAR|ISTRIP)
+ OFLAG 0
+ LFLAG 0
+ </pre>
+ <pre>
+ The tty setting for Meinberg GPS 166/167 receivers is:
+ CFLAG (B19200|CS8|PARENB|CREAD|HUPCL)
+ IFLAG (IGNBRK|IGNPAR|ISTRIP)
+ OFLAG 0
+ LFLAG 0
+ </pre>
+
+ <p>
+ The clock is run at datagram once per second.
+ Stock dataformat is:
+ <pre>
+ &lt;STX&gt;D:&lt;dd&gt;.&lt;mm&gt;.&lt;yy&gt;;T:&lt;w&gt;;U:&lt;hh&gt;:&lt;mm&gt;:&lt;ss&gt;;&lt;S&gt;&lt;F&gt;&lt;D&gt;&lt;A&gt;&lt;ETX&gt;
+pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
+ 1 23 45 6 78 9 01 234 5 678 90 1 23 4 56 7 8 9 0 1 2
+
+&lt;STX&gt; = '\002' ASCII start of text
+&lt;ETX&gt; = '\003' ASCII end of text
+&lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt; = day, month, year(2 digits!!)
+&lt;w&gt; = day of week (sunday= 0)
+&lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt; = hour, minute, second
+&lt;S&gt; = '#' if never synced since powerup else ' ' for DCF U/A 31
+ '#' if not PZF sychronisation available else ' ' for PZF 535
+&lt;F&gt; = '*' if time comes from internal quartz else ' '
+&lt;D&gt; = 'S' if daylight saving time is active else ' '
+&lt;D&gt; = 'U' if UTC time code is deliverd else ' '
+&lt;A&gt; = '!' during the hour preceeding an daylight saving time
+ start/end change
+&lt;A&gt; = 'A' if a leap second is announced
+</pre>
+
+ <pre>
+ &lt;STX&gt;&lt;dd&gt;.&lt;mm&gt;.&lt;yy&gt;; &lt;w&gt;; &lt;hh&gt;:&lt;mm&gt;:&lt;ss&gt;; &lt;U&gt;&lt;S&gt;&lt;F&gt;&lt;D&gt;&lt;A&gt;&lt;L&gt;&lt;R&gt;&lt;ETX&gt;
+ pos: 0 00 0 00 0 00 11 1 11 11 1 11 2 22 22 2 2 2 2 2 3 3 3
+ 1 23 4 56 7 89 01 2 34 56 7 89 0 12 34 5 6 7 8 9 0 1 2
+ &lt;STX&gt; = '\002' ASCII start of text
+ &lt;ETX&gt; = '\003' ASCII end of text
+ &lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt; = day, month, year(2 digits!!)
+ &lt;w&gt; = day of week (sunday= 0)
+ &lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt; = hour, minute, second
+ &lt;U&gt; = 'U' UTC time display
+ &lt;S&gt; = '#' if never synced since powerup else ' ' for DCF U/A 31
+ '#' if not PZF sychronisation available else ' ' for PZF 535
+ &lt;F&gt; = '*' if time comes from internal quartz else ' '
+ &lt;D&gt; = 'S' if daylight saving time is active else ' '
+ &lt;A&gt; = '!' during the hour preceeding an daylight saving time
+ start/end change
+ &lt;L&gt; = 'A' LEAP second announcement
+ &lt;R&gt; = 'R' alternate antenna
+</pre>
+<p>Meinberg GPS166 receiver
+<br>
+ You must get the Uni-Erlangen firmware for the GPS receiver support
+ to work to full satisfaction !
+<pre>
+ &lt;STX&gt;&lt;dd&gt;.&lt;mm&gt;.&lt;yy&gt;; &lt;w&gt;; &lt;hh&gt;:&lt;mm&gt;:&lt;ss&gt;; &lt;+/-&gt;&lt;00:00&gt;; &lt;U&gt;&lt;S&gt;&lt;F&gt;&lt;D&gt;&lt;A&gt;&lt;L&gt;&lt;R&gt;&lt;L&gt;; &lt;position...&gt;&lt;ETX&gt;
+ *
+ 000000000111111111122222222223333333333444444444455555555556666666
+ 123456789012345678901234567890123456789012345678901234567890123456
+ \x0209.07.93; 5; 08:48:26; +00:00; ; 49.5736N 11.0280E 373m\x03
+ *
+
+ &lt;STX&gt; = '\002' ASCII start of text
+ &lt;ETX&gt; = '\003' ASCII end of text
+ &lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt; = day, month, year(2 digits!!)
+ &lt;w&gt; = day of week (sunday= 0)
+ &lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt; = hour, minute, second
+ &lt;+/-&gt;,&lt;00:00&gt; = offset to UTC
+ &lt;S&gt; = '#' if never synced since powerup else ' ' for DCF U/A 31
+ '#' if not PZF sychronisation available else ' ' for PZF 535
+ &lt;U&gt; = 'U' UTC time display
+ &lt;F&gt; = '*' if time comes from internal quartz else ' '
+ &lt;D&gt; = 'S' if daylight saving time is active else ' '
+ &lt;A&gt; = '!' during the hour preceeding an daylight saving time
+ start/end change
+ &lt;L&gt; = 'A' LEAP second announcement
+ &lt;R&gt; = 'R' alternate antenna (reminiscent of PZF535) usually ' '
+ &lt;L&gt; = 'L' on 23:59:60
+</pre>
+
+<p>For the Meinberg parse look into clock_meinberg.c
+
+<br>
+<h2>Raw DCF77 Data via serial line</h2>
+<p>RAWDCF: end=TIMEOUT&gt;1.5s, sync each char (any char),generate psuedo time
+ codes, fixed format
+<p>
+ direct DCF77 code input
+
+ <p>In Europe it is relatively easy/cheap the receive the german time code
+ transmitter DCF77. The simplest version to process its signal is to
+ feed the 100/200ms pulse of the demodulated AM signal via a level
+ converter to an RS232 port at 50Baud. parse/clk_rawdcf.c holds all
+ necessary decoding logic for the time code which is transmitted each
+ minute for one minute. A bit of the time code is sent once a second.
+
+<pre>
+ The preferred tty setting is:
+ CFLAG (B50|CS8|CREAD|CLOCAL)
+ IFLAG 0
+ OFLAG 0
+ LFLAG 0
+</pre>
+
+<h2>DCF77 raw time code</h2>
+
+
+<p>From "Zur Zeit", Physikalisch-Technische Bundesanstalt (PTB), Braunschweig
+und Berlin, März 1989
+<br>
+<pre>
+ Timecode transmission:
+
+ AM:
+
+ time marks are send every second except for the second before the
+ next minute mark
+ time marks consist of a reduction of transmitter power to 25%
+ of the nominal level
+ the falling edge is the time indication (on time)
+ time marks of a 100ms duration constitute a logical 0
+ time marks of a 200ms duration constitute a logical 1
+
+ FM:
+
+ see the spec. (basically a (non-)inverted psuedo random phase shift)
+
+ Encoding:
+
+ Second Contents
+ 0 - 10 AM: free, FM: 0
+ 11 - 14 free
+ 15 R - alternate antenna
+ 16 A1 - expect zone change (1 hour before)
+ 17 - 18 Z1,Z2 - time zone
+ 0 0 illegal
+ 0 1 MEZ (MET)
+ 1 0 MESZ (MED, MET DST)
+ 1 1 illegal
+ 19 A2 - expect leap insertion/deletion (1 hour before)
+ 20 S - start of time code (1)
+ 21 - 24 M1 - BCD (lsb first) Minutes
+ 25 - 27 M10 - BCD (lsb first) 10 Minutes
+ 28 P1 - Minute Parity (even)
+ 29 - 32 H1 - BCD (lsb first) Hours
+ 33 - 34 H10 - BCD (lsb first) 10 Hours
+ 35 P2 - Hour Parity (even)
+ 36 - 39 D1 - BCD (lsb first) Days
+ 40 - 41 D10 - BCD (lsb first) 10 Days
+ 42 - 44 DW - BCD (lsb first) day of week (1: Monday -> 7: Sunday)
+ 45 - 49 MO - BCD (lsb first) Month
+ 50 MO0 - 10 Months
+ 51 - 53 Y1 - BCD (lsb first) Years
+ 54 - 57 Y10 - BCD (lsb first) 10 Years
+ 58 P3 - Date Parity (even)
+ 59 - usually missing (minute indication), except for leap insertion
+</pre>
+
+<hr>
+<h2>Schmid clock</h2>
+
+<p>
+ Schmid clock: needs poll, binary input, end='\xFC', sync start
+
+ <p>
+ The Schmid clock is a DCF77 receiver that sends a binary
+ time code at the reception of a flag byte. The contents
+ if the flag byte determined the time code format. The
+ binary time code is delimited by the byte 0xFC.
+<PRE>
+ TTY setup is:
+ CFLAG (B1200|CS8|CREAD|CLOCAL)
+ IFLAG 0
+ OFLAG 0
+ LFLAG 0
+
+</PRE>
+
+
+<p> The command to Schmid's DCF77 clock is a single byte; each bit
+ allows the user to select some part of the time string, as follows (the
+ output for the lsb is sent first).
+
+<pre>
+ Bit 0: time in MEZ, 4 bytes *binary, not BCD*; hh.mm.ss.tenths
+ Bit 1: date 3 bytes *binary, not BCD: dd.mm.yy
+ Bit 2: week day, 1 byte (unused here)
+ Bit 3: time zone, 1 byte, 0=MET, 1=MEST. (unused here)
+ Bit 4: clock status, 1 byte, 0=time invalid,
+ 1=time from crystal backup,
+ 3=time from DCF77
+ Bit 5: transmitter status, 1 byte,
+ bit 0: backup antenna
+ bit 1: time zone change within 1h
+ bit 3,2: TZ 01=MEST, 10=MET
+ bit 4: leap second will be
+ added within one hour
+ bits 5-7: Zero
+ Bit 6: time in backup mode, units of 5 minutes (unused here)
+</pre>
+
+<hr>
+<h2>Trimble SV6 ASCII time code (TAIP)</h2>
+
+<p>
+ Trimble SV6: needs poll, ascii timecode, start='&gt;', end='&lt;',
+ query='&gt;QTM&lt;', eol='&lt;'
+
+<p> Trimble SV6 is a GPS receiver with PPS output. It needs to be polled.
+ It also need a special tty mode setup (EOL='&lt;').
+<pre>
+ TTY setup is:
+ CFLAG (B4800|CS8|CREAD)
+ IFLAG (BRKINT|IGNPAR|ISTRIP|ICRNL|IXON)
+ OFLAG (OPOST|ONLCR)
+ LFLAG (ICANON|ECHOK)
+
+ Special flags are:
+ PARSE_F_PPSPPS - use CIOGETEV for PPS time stamping
+ PARSE_F_PPSONSECOND - the time code is not related to
+ the PPS pulse (so use the time code
+ only for the second epoch)
+
+ Timecode
+ 0000000000111111111122222222223333333 / char
+ 0123456789012345678901234567890123456 \ posn
+ &gt;RTMhhmmssdddDDMMYYYYoodnnvrrrrr;*xx&lt; Actual
+ ----33445566600112222BB7__-_____--99- Parse
+ &gt;RTM 1 ;* &lt; Check
+</pre>
+
+<hr>
+<h2>ELV DCF7000</h2>
+<p>
+ ELV DCF7000: end='\r', pattern=" - - - - - - - \r"
+<p>
+ The ELV DCF7000 is a cheap DCF77 receiver sending each second
+ a time code (though not very precise!) delimited by '`r'
+<pre>
+ Timecode
+ YY-MM-DD-HH-MM-SS-FF\r
+
+ FF&0x1 - DST
+ FF&0x2 - DST switch warning
+ FF&0x4 - unsynchronised
+</pre>
+<hr>
+<h2>HOPF 6021 und Kompatible</h2>
+
+<p>
+ HOPF Funkuhr 6021 mit serieller Schnittstelle
+ Created by F.Schnekenbuehl &lt;frank@comsys.dofn.de&gt; from clk_rcc8000.c
+ Nortel DASA Network Systems GmbH, Department: ND250
+ A Joint venture of Daimler-Benz Aerospace and Nortel.
+
+<pre>
+ hopf Funkuhr 6021
+ used with 9600,8N1,
+ UTC via serial line
+ "Sekundenvorlauf" ON
+ ETX zum Sekundenvorlauf ON
+ dataformat 6021
+ output time and date
+ transmit with control characters
+ transmit evry second
+
+ Type 6021 Serial Output format
+
+ 000000000011111111 / char
+ 012345678901234567 \ position
+ sABHHMMSSDDMMYYnre Actual
+ C4110046231195 Parse
+ s enr Check
+
+ s = STX (0x02), e = ETX (0x03)
+ n = NL (0x0A), r = CR (0x0D)
+
+ A B - Status and weekday
+
+ A - Status
+
+ 8 4 2 1
+ x x x 0 - no announcement
+ x x x 1 - Summertime - wintertime - summertime announcement
+ x x 0 x - Wintertime
+ x x 1 x - Summertime
+ 0 0 x x - Time/Date invalid
+ 0 1 x x - Internal clock used
+ 1 0 x x - Radio clock
+ 1 1 x x - Radio clock highprecision
+
+ B - 8 4 2 1
+ 0 x x x - MESZ/MEZ
+ 1 x x x - UTC
+ x 0 0 1 - Monday
+ x 0 1 0 - Tuesday
+ x 0 1 1 - Wednesday
+ x 1 0 0 - Thursday
+ x 1 0 1 - Friday
+ x 1 1 0 - Saturday
+ x 1 1 1 - Sunday
+</pre>
+<hr>
+<h2>Diem Computime Clock</h2>
+
+<p>
+ The Computime receiver sends a datagram in the following format every minute
+<pre>
+ Timestamp T:YY:MM:MD:WD:HH:MM:SSCRLF
+ Pos 0123456789012345678901 2 3
+ 0000000000111111111122 2 2
+ Parse T: : : : : : : \r\n
+
+ T Startcharacter "T" specifies start of the timestamp
+ YY Year MM Month 1-12
+ MD Day of the month
+ WD Day of week
+ HH Hour
+ MM Minute
+ SS Second
+ CR Carriage return
+ LF Linefeed
+</pre>
+<hr>
+<h2>WHARTON 400A Series Clock with a 404.2 Serial interface</h2>
+
+<p>
+ The WHARTON 400A Series clock is able to send date/time serial messages
+ in 7 output formats. We use format 1 here because it is the shortest.
+ We set up the clock to send a datagram every second.
+ For use with this driver, the WHARTON 400A Series clock must be set-up
+ as follows :
+<pre>
+ Programmable Selected
+ Option No Option
+ BST or CET display 3 9 or 11
+ No external controller 7 0
+ Serial Output Format 1 9 1
+ Baud rate 9600 bps 10 96
+ Bit length 8 bits 11 8
+ Parity even 12 E
+</pre>
+ WHARTON 400A Series output format 1 is as follows :
+<pre>
+ Timestamp STXssmmhhDDMMYYSETX
+ Pos 0 12345678901234
+ 0 00000000011111
+
+ STX start transmission (ASCII 0x02)
+ ETX end transmission (ASCII 0x03)
+ ss Second expressed in reversed decimal (units then tens)
+ mm Minute expressed in reversed decimal
+ hh Hour expressed in reversed decimal
+ DD Day of month expressed in reversed decimal
+ MM Month expressed in reversed decimal (January is 1)
+ YY Year (without century) expressed in reversed decimal
+ S Status byte : 0x30 +
+ bit 0 0 = MSF source 1 = DCF source
+ bit 1 0 = Winter time 1 = Summer time
+ bit 2 0 = not synchronised 1 = synchronised
+ bit 3 0 = no early warning 1 = early warning
+</pre>
OpenPOWER on IntegriCloud