]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/ntp/html/parsedata.html
This commit was generated by cvs2svn to compensate for changes in r169185,
[FreeBSD/FreeBSD.git] / contrib / ntp / html / parsedata.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
3 <html>
4
5     <head>
6         <meta name="generator" content="HTML Tidy, see www.w3.org">
7         <title>NTP PARSE clock data formats</title>
8         <link href="scripts/style.css" type="text/css" rel="stylesheet">
9     </head>
10
11     <body>
12         <h3>NTP PARSE clock data formats</h3>
13         <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).</p>
14         <hr>
15         <h4>Meinberg clocks</h4>
16         <pre>
17 Meinberg: start=&lt;STX&gt;, end=&lt;ETX&gt;, sync on start
18       pattern=&quot;\2D:  .  .  ;T: ;U:  .  .  ;    \3&quot;
19       pattern=&quot;\2  .  .  ;  ;   :  :  ;        \3&quot;
20       pattern=&quot;\2  .  .  ;  ;   :  :  ;    :  ;        ;   .         .       &quot;
21 </pre>
22         <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:%20info@meinberg.de">info@meinberg.de</a></p>
23         <p>General characteristics:<br>
24             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.</p>
25         <p>The preferred tty setting for Meinberg is:</p>
26         <pre>
27                 CFLAG           (B9600|CS7|PARENB|CREAD|HUPCL)
28                 IFLAG           (IGNBRK|IGNPAR|ISTRIP)
29                 OFLAG           0
30                 LFLAG           0
31         </pre>
32         <p>The tty setting for Meinberg GPS 166/167 receivers is:</p>
33         <pre>
34                 CFLAG           (B19200|CS8|PARENB|CREAD|HUPCL)
35                 IFLAG           (IGNBRK|IGNPAR|ISTRIP)
36                 OFLAG           0
37                 LFLAG           0
38         </pre>
39         <p>The clock is run at datagram once per second. Stock dataformat is:</p>
40         <pre>
41     &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;
42 pos:  0  00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2  2  3  3   3
43       1  23 45 6 78 9 01 234 5 678 90 1 23 4 56 7 8  9  0  1   2
44
45 &lt;STX&gt;           = '\002' ASCII start of text
46 &lt;ETX&gt;           = '\003' ASCII end of text
47 &lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt;  = day, month, year(2 digits!!)
48 &lt;w&gt;             = day of week (sunday= 0)
49 &lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt;  = hour, minute, second
50 &lt;S&gt;             = '#' if never synced since powerup else ' ' for DCF U/A 31
51                   '#' if not PZF sychronisation available else ' ' for PZF 535
52 &lt;F&gt;             = '*' if time comes from internal quartz else ' '
53 &lt;D&gt;             = 'S' if daylight saving time is active else ' '
54 &lt;D&gt;             = 'U' if UTC time code is deliverd else ' '
55 &lt;A&gt;             = '!' during the hour preceeding an daylight saving time
56                       start/end change
57 &lt;A&gt;             = 'A' if a leap second is announced
58 </pre>
59         <pre>
60         &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;
61     pos:  0   00 0 00 0 00 11 1 11 11 1 11 2 22 22 2  2  2  2  2  3  3   3
62           1   23 4 56 7 89 01 2 34 56 7 89 0 12 34 5  6  7  8  9  0  1   2
63     &lt;STX&gt;           = '\002' ASCII start of text
64     &lt;ETX&gt;           = '\003' ASCII end of text
65     &lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt;  = day, month, year(2 digits!!)
66     &lt;w&gt;             = day of week (sunday= 0)
67     &lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt;  = hour, minute, second
68     &lt;U&gt;             = 'U' UTC time display
69     &lt;S&gt;             = '#' if never synced since powerup else ' ' for DCF U/A 31
70                       '#' if not PZF sychronisation available else ' ' for PZF 535
71     &lt;F&gt;             = '*' if time comes from internal quartz else ' '
72     &lt;D&gt;             = 'S' if daylight saving time is active else ' '
73     &lt;A&gt;             = '!' during the hour preceeding an daylight saving time
74                           start/end change
75     &lt;L&gt;             = 'A' LEAP second announcement
76     &lt;R&gt;             = 'R' alternate antenna
77 </pre>
78         <p>Meinberg GPS166 receiver<br>
79             You must get the Uni-Erlangen firmware for the GPS receiver support to work to full satisfaction !</p>
80         <pre>
81         &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;
82  *
83            000000000111111111122222222223333333333444444444455555555556666666
84            123456789012345678901234567890123456789012345678901234567890123456
85         \x0209.07.93; 5; 08:48:26; +00:00;        ; 49.5736N  11.0280E  373m\x03
86  *
87     
88     &lt;STX&gt;           = '\002' ASCII start of text
89     &lt;ETX&gt;           = '\003' ASCII end of text
90     &lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt;  = day, month, year(2 digits!!)
91     &lt;w&gt;             = day of week (sunday= 0)
92     &lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt;  = hour, minute, second
93     &lt;+/-&gt;,&lt;00:00&gt;   = offset to UTC
94     &lt;S&gt;             = '#' if never synced since powerup else ' ' for DCF U/A 31
95                       '#' if not PZF sychronisation available else ' ' for PZF 535
96     &lt;U&gt;             = 'U' UTC time display
97     &lt;F&gt;             = '*' if time comes from internal quartz else ' '
98     &lt;D&gt;             = 'S' if daylight saving time is active else ' '
99     &lt;A&gt;             = '!' during the hour preceeding an daylight saving time
100                           start/end change
101     &lt;L&gt;             = 'A' LEAP second announcement
102     &lt;R&gt;             = 'R' alternate antenna (reminiscent of PZF535) usually ' '
103     &lt;L&gt;              = 'L' on 23:59:60
104 </pre>
105         <p>For the Meinberg parse look into clock_meinberg.c</p>
106         <h4>Raw DCF77 Data via serial line</h4>
107         <p>RAWDCF: end=TIMEOUT&gt;1.5s, sync each char (any char),generate psuedo time codes, fixed format</p>
108         <p>direct DCF77 code input</p>
109         <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.</p>
110         <pre>
111         The preferred tty setting is:
112                 CFLAG           (B50|CS8|CREAD|CLOCAL)
113                 IFLAG           0
114                 OFLAG           0
115                 LFLAG           0
116 </pre>
117         <h4>DCF77 raw time code</h4>
118         <p>From &quot;Zur Zeit&quot;, Physikalisch-Technische Bundesanstalt (PTB), Braunschweig und Berlin, M&#132;rz 1989<br>
119         </p>
120         <p>Timecode transmission:</p>
121         <pre>
122         AM:
123
124         time marks are send every second except for the second before the
125         next minute mark
126         time marks consist of a reduction of transmitter power to 25%
127         of the nominal level
128         the falling edge is the time indication (on time)
129         time marks of a 100ms duration constitute a logical 0
130         time marks of a 200ms duration constitute a logical 1
131 </pre>
132         <p>see the spec. (basically a (non-)inverted psuedo random phase shift) encoding:</p>
133         <pre>
134         FM:
135
136         Second  Contents
137         0  - 10 AM: free, FM: 0
138         11 - 14 free
139         15              R     - alternate antenna
140         16              A1    - expect zone change (1 hour before)
141         17 - 18 Z1,Z2 - time zone
142                  0  0 illegal
143                  0  1 MEZ  (MET)
144                  1  0 MESZ (MED, MET DST)
145                  1  1 illegal
146         19              A2    - expect leap insertion/deletion (1 hour before)
147         20              S     - start of time code (1)
148         21 - 24 M1    - BCD (lsb first) Minutes
149         25 - 27 M10   - BCD (lsb first) 10 Minutes
150         28              P1    - Minute Parity (even)
151         29 - 32 H1    - BCD (lsb first) Hours
152         33 - 34      H10   - BCD (lsb first) 10 Hours
153         35              P2    - Hour Parity (even)
154         36 - 39 D1    - BCD (lsb first) Days
155         40 - 41 D10   - BCD (lsb first) 10 Days
156         42 - 44 DW    - BCD (lsb first) day of week (1: Monday -&gt; 7: Sunday)
157         45 - 49 MO    - BCD (lsb first) Month
158         50           MO0   - 10 Months
159         51 - 53 Y1    - BCD (lsb first) Years
160         54 - 57 Y10   - BCD (lsb first) 10 Years
161         58              P3    - Date Parity (even)
162         59                    - usually missing (minute indication), except for leap insertion
163 </pre>
164         <hr>
165         <h4>Schmid clock</h4>
166         <p>Schmid clock: needs poll, binary input, end='\xFC', sync start</p>
167         <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.</p>
168         <pre>
169         TTY setup is:
170                 CFLAG           (B1200|CS8|CREAD|CLOCAL)
171                 IFLAG           0
172                 OFLAG           0
173                 LFLAG           0
174
175 </pre>
176         <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).</p>
177         <pre>
178         Bit 0:  time in MEZ, 4 bytes *binary, not BCD*; hh.mm.ss.tenths
179         Bit 1:  date 3 bytes *binary, not BCD: dd.mm.yy
180         Bit 2:  week day, 1 byte (unused here)
181         Bit 3:  time zone, 1 byte, 0=MET, 1=MEST. (unused here)
182         Bit 4:  clock status, 1 byte,   0=time invalid,
183                                         1=time from crystal backup,
184                                         3=time from DCF77
185         Bit 5:  transmitter status, 1 byte,
186                                         bit 0: backup antenna
187                                         bit 1: time zone change within 1h
188                                         bit 3,2: TZ 01=MEST, 10=MET
189                                         bit 4: leap second will be
190                                                 added within one hour
191                                         bits 5-7: Zero
192         Bit 6:  time in backup mode, units of 5 minutes (unused here)
193 </pre>
194         <hr>
195         <h4>Trimble SV6 ASCII time code (TAIP)</h4>
196         <p>Trimble SV6: needs poll, ascii timecode, start='&gt;', end='&lt;', query='&gt;QTM&lt;', eol='&lt;'</p>
197         <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;').</p>
198         <pre>
199         TTY setup is:
200                 CFLAG            (B4800|CS8|CREAD)
201                 IFLAG            (BRKINT|IGNPAR|ISTRIP|ICRNL|IXON)
202                 OFLAG            (OPOST|ONLCR)
203                 LFLAG            (ICANON|ECHOK)
204 </pre>
205         <p>Special flags are:</p>
206         <pre>           PARSE_F_PPSPPS      - use CIOGETEV for PPS time stamping
207                 PARSE_F_PPSONSECOND - the time code is not related to
208                                       the PPS pulse (so use the time code
209                                       only for the second epoch)
210
211         Timecode
212         0000000000111111111122222222223333333   / char
213         0123456789012345678901234567890123456   \ posn
214         &gt;RTMhhmmssdddDDMMYYYYoodnnvrrrrr;*xx&lt;     Actual
215         ----33445566600112222BB7__-_____--99-   Parse
216         &gt;RTM                      1     ;*  &lt;     Check
217 </pre>
218         <hr>
219         <h4>ELV DCF7000</h4>
220         <p>ELV DCF7000: end='\r', pattern=&quot; - - - - - - - \r&quot;</p>
221         <p>The ELV DCF7000 is a cheap DCF77 receiver sending each second a time code (though not very precise!) delimited by '`r'</p>
222         <pre>
223         Timecode
224           YY-MM-DD-HH-MM-SS-FF\r
225
226                 FF&amp;0x1      - DST
227                 FF&amp;0x2      - DST switch warning
228                 FF&amp;0x4  - unsynchronised
229 </pre>
230         <hr>
231         <h4>HOPF 6021 und Kompatible</h4>
232         <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.</p>
233         <pre>
234  hopf Funkuhr 6021 
235       used with 9600,8N1,
236       UTC via serial line
237       &quot;Sekundenvorlauf&quot; ON
238       ETX zum Sekundenvorlauf ON
239       dataformat 6021
240       output time and date
241       transmit with control characters
242       transmit evry second
243  </pre>
244         <p>Type 6021 Serial Output format</p>
245         <pre>
246       000000000011111111 / char
247       012345678901234567 \ position
248       sABHHMMSSDDMMYYnre  Actual
249        C4110046231195     Parse
250       s              enr  Check
251
252   s = STX (0x02), e = ETX (0x03)
253   n = NL  (0x0A), r = CR  (0x0D)
254
255   A B - Status and weekday
256  
257   A - Status
258
259       8 4 2 1
260       x x x 0  - no announcement
261       x x x 1  - Summertime - wintertime - summertime announcement
262       x x 0 x  - Wintertime
263       x x 1 x  - Summertime
264       0 0 x x  - Time/Date invalid
265       0 1 x x  - Internal clock used 
266       1 0 x x  - Radio clock
267       1 1 x x  - Radio clock highprecision
268
269   B - 8 4 2 1
270       0 x x x  - MESZ/MEZ
271       1 x x x  - UTC
272       x 0 0 1  - Monday
273       x 0 1 0  - Tuesday
274       x 0 1 1  - Wednesday
275       x 1 0 0  - Thursday
276       x 1 0 1  - Friday
277       x 1 1 0  - Saturday
278       x 1 1 1  - Sunday
279 </pre>
280         <hr>
281         <h4>Diem Computime Clock</h4>
282         <p>The Computime receiver sends a datagram in the following format every minute</p>
283         <pre>   
284    Timestamp    T:YY:MM:MD:WD:HH:MM:SSCRLF 
285    Pos          0123456789012345678901 2 3
286                 0000000000111111111122 2 2
287    Parse        T:  :  :  :  :  :  :  \r\n
288    
289    T    Startcharacter &quot;T&quot; specifies start of the timestamp 
290    YY   Year MM Month 1-12 
291    MD   Day of the month 
292    WD   Day of week 
293    HH   Hour 
294    MM   Minute 
295    SS   Second
296    CR   Carriage return 
297    LF   Linefeed
298 </pre>
299         <hr>
300         <h4>WHARTON 400A Series Clock with a 404.2 Serial interface</h4>
301         <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 :</p>
302         <pre>
303                                         Programmable    Selected
304                                         Option No       Option
305         BST or CET display              3               9 or 11
306         No external controller          7               0
307         Serial Output Format 1          9               1
308         Baud rate 9600 bps              10              96
309         Bit length 8 bits               11              8
310         Parity even                     12              E
311 </pre>
312         <p>WHARTON 400A Series output format 1 is as follows :</p>
313         <pre>
314    Timestamp    STXssmmhhDDMMYYSETX
315    Pos          0  12345678901234
316                 0  00000000011111
317   
318    STX  start transmission (ASCII 0x02)
319    ETX  end transmission (ASCII 0x03)
320    ss   Second expressed in reversed decimal (units then tens)
321    mm   Minute expressed in reversed decimal
322    hh   Hour expressed in reversed decimal
323    DD   Day of month expressed in reversed decimal
324    MM   Month expressed in reversed decimal (January is 1)
325    YY   Year (without century) expressed in reversed decimal
326    S    Status byte : 0x30 +
327                 bit 0   0 = MSF source          1 = DCF source
328                 bit 1   0 = Winter time         1 = Summer time
329                 bit 2   0 = not synchronised    1 = synchronised
330                 bit 3   0 = no early warning    1 = early warning
331 </pre>
332         <hr>
333         <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
334     </body>
335
336 </html>