mbg_gps166.h revision 405de9daf4474c544b6eb552fed900705dccbdcc
1/*
2 * /src/NTP/REPOSITORY/ntp4-dev/include/mbg_gps166.h,v 4.7 2006/06/22 18:41:43 kardel RELEASE_20060622_A
3 *
4 * mbg_gps166.h,v 4.7 2006/06/22 18:41:43 kardel RELEASE_20060622_A
5 *
6 * $Created: Sun Jul 20 09:20:50 1997 $
7 *
8 * File GPSSERIO.H Copyright (c) by Meinberg Funkuhren (www.meinberg.de)
9 *
10 * Linkage to PARSE:
11 * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 * 1. Redistributions of source code must retain the above copyright
17 *    notice, this list of conditions and the following disclaimer.
18 * 2. Redistributions in binary form must reproduce the above copyright
19 *    notice, this list of conditions and the following disclaimer in the
20 *    documentation and/or other materials provided with the distribution.
21 * 3. Neither the name of the author nor the names of its contributors
22 *    may be used to endorse or promote products derived from this software
23 *    without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 * SUCH DAMAGE.
36 *
37 */
38#ifndef MBG_GPS166_H
39#define MBG_GPS166_H
40
41
42/***************************************************************************/
43/*                                                                         */
44/*   File:         GPSSERIO.H                    4.1                       */
45/*                                                                         */
46/*   Project:      Common C Library                                        */
47/*                                                                         */
48/*   Compiler:     Borland C++                                             */
49/*                                                                         */
50/*   Author:       M. Burnicki,  Meinberg Funkuhren                        */
51/*                                                                         */
52/*                                                                         */
53/*   Description:                                                          */
54/*     This file defines structures and codes to be used to access GPS166  */
55/*     via its serial interface COM0. COM0 should be set to a high baud    */
56/*     rate, default is 19200.                                             */
57/*                                                                         */
58/*     Standard GPS166 serial operation is to send a time string that is   */
59/*     compatible with Meinberg UA31 or PZF535 DCF77 radio remote clocks.  */
60/*     That string can be transmitted automatically once per second, once  */
61/*     per minute or on request per ASCII '?'.                             */
62/*                                                                         */
63/*     Parameter setup or parameter readout works using blocks of binary   */
64/*     data which have to be isolated from the standard string. A block of */
65/*     data starts with a SOH code (ASCII Start Of Header, 0x01) followed  */
66/*     by a message header with constant length and a data portion with    */
67/*     variable length. The first field (cmd) of the message header holds  */
68/*     the command code rsp. the type of data to be transmitted. The next  */
69/*     field (len) gives the number of data bytes that are transmitted     */
70/*     after the header. This number ranges from 0 to sizeof( MSG_DATA ).  */
71/*     The third field (data_csum) holds a checksum of all data bytes and  */
72/*     the last field of the header finally holds the checksum of the.     */
73/*     header.                                                             */
74/*                                                                         */
75/***************************************************************************/
76
77/* the control codes defined below are to be or'ed with a command/type code */
78
79#define GPS_REQACK    0x8000   /* to GPS166: request acknowledge */
80#define GPS_ACK       0x4000   /* from GPS166: acknowledge a command */
81#define GPS_NACK      0x2000   /* from GPS166: error receiving command */
82
83#define GPS_CTRL_MSK  0xF000   /* masks control code from command */
84
85
86/* The codes below specify commands/types of data to be supplied to GPS166: */
87
88/*                            GPS166 auto-message to host            */
89/*                            �   host request, GPS166 response      */
90/*                            �   �   host download to GPS166        */
91/*                            �   �   �                              */
92enum {  /*                    �   �   �                              */
93  /* system data */
94  GPS_AUTO_ON = 0x000,   /* �   �   � X � enable auto-messages from GPS166 */
95  GPS_AUTO_OFF,          /* �   �   � X � disable auto-messages from GPS166 */
96  GPS_SW_REV,            /* �   � X �   � request software revision */
97  GPS_STAT,              /* �   � X �   � request status of buffered variables */
98  GPS_TIME,              /* � X �   � X � current time or capture or init board time */
99  GPS_POS_XYZ,           /* �   � X � X � current position in ECEF coords */
100  GPS_POS_LLA,           /* �   � X � X � current position in geographic coords */
101  GPS_TZDL,              /* �   � X � X � time zone / daylight saving */
102  GPS_PORT_PARM,         /* �   � X � X � parameters of the serial ports */
103  GPS_SYNTH,             /* �   � X � X � synthesizer's frequency and phase */
104  GPS_ANT_INFO,          /* � X � X �   � time diff after antenna disconnect */
105  GPS_UCAP,              /* � X � X �   � user capture */
106
107  /* GPS data */
108  GPS_CFGH = 0x100,      /* �   � X � X � SVs' configuration and health codes */
109  GPS_ALM,               /* �   � X � X � one SV's almanac */
110  GPS_EPH,               /* �   � X � X � one SV's ephemeris */
111  GPS_UTC,               /* �   � X � X � UTC correction parameters */
112  GPS_IONO,              /* �   � X � X � ionospheric correction parameters */
113  GPS_ASCII_MSG          /* �   � X �   � the GPS ASCII message */
114};
115
116/*
117 * modelled after GPSDEFS.H Revision 1.5
118 */
119/***************************************************************************/
120/*                                                                         */
121/*   File:         GPSDEFS.H                     4.1          */
122/*                                                                         */
123/*   Project:      Common C Library                                        */
124/*                                                                         */
125/*   Compiler:     Borland C++                                             */
126/*                                                                         */
127/*   Author:       M. Burnicki,  Meinberg Funkuhren                        */
128/*                                                                         */
129/*                                                                         */
130/*   Description:                                                          */
131/*     General definitions to be used with GPS166                          */
132/*     GPS166 Rev. 1.23 or above                                           */
133/*                                                                         */
134/*   Modifications: see file GPSLIB.TXT                                    */
135/*                                                                         */
136/***************************************************************************/
137#define _GPSDEFS_H
138/* the type of various checksums */
139
140#ifndef _CSUM_DEFINED
141  typedef unsigned short CSUM;
142#  define _CSUM_DEFINED
143#endif
144
145/* the message header */
146
147typedef struct {
148  unsigned short gps_cmd;
149  unsigned short gps_len;
150  unsigned short gps_data_csum;
151  unsigned short gps_hdr_csum;
152} GPS_MSG_HDR;
153
154/* a struct used to hold the software revision information */
155
156typedef struct {
157  unsigned short code;       /* e.g. 0x0120 means rev. 1.20 */
158  unsigned char name[17];     /* used to identify customized versions */
159} SW_REV;
160
161/* GPS ASCII message */
162
163typedef struct {
164  CSUM csum;       /* checksum of the remaining bytes */
165  short valid;     /* flag data are valid */
166  char s[23];      /* 22 chars GPS ASCII message plus trailing zero */
167} ASCII_MSG;
168
169#define MIN_SVNO         1                  /* min. SV number */
170#define MAX_SVNO        32                  /* max. SV number */
171#define N_SVNO ( MAX_SVNO - MIN_SVNO + 1)   /* number of possibly active SVs */
172
173
174typedef short          SVNO;     /* the number of a SV */
175typedef unsigned short HEALTH;  /* a SV's health code */
176typedef unsigned short CFG;     /* a SV's configuration code */
177typedef unsigned short IOD;     /* Issue-Of-Data code */
178
179/* Date and time referred to the linear time scale defined by GPS. */
180/* GPS time is defined by the number of weeks since midnight from */
181/* January 5, 1980 to January 6, 1980 plus the number of seconds of */
182/* the current week plus fractions of a second. GPS time differs from */
183/* UTC because UTC is corrected with leap seconds while GPS time scale */
184/* is continuous. */
185
186typedef struct {
187  unsigned short wn;     /* the week number since GPS has been installed */
188  unsigned long sec;     /* the second of that week */
189  unsigned long tick;    /* fractions of a second; scale: 1E-7 */
190} T_GPS;
191
192
193/* Local date and time computed from GPS time. The current number */
194/* of leap seconds have to be added to get UTC from GPS time. */
195/* Additional corrections could have been made according to the */
196/* time zone/daylight saving parameters (TZDL, see below) defined */
197/* by the user. The status field can be checked to see which corrections */
198/* have been applied. */
199
200#ifndef _TM_DEFINED
201  typedef struct {
202    short year;          /* 0..9999 */
203    char month;          /* 1..12 */
204    char mday;           /* 1..31 */
205    short yday;          /* 1..366 */
206    char wday;           /* 0..6 == Sun..Sat */
207    char hour;           /* 0..23 */
208    char minute;         /* 0..59 */
209    char second;         /* 0..59 */
210    long frac;           /* fractions of a second, scale 1E-7 */
211    long offs_from_utc;  /* local time's offset from UTC */
212    unsigned short status;       /* flags */
213  } TM;
214
215  /* status flags used with conversion from GPS time to local time */
216
217#  define TM_UTC        0x01   /* UTC correction has been made */
218#  define TM_LOCAL      0x02   /* UTC has been converted to local time */
219#  define TM_DL_ANN     0x04   /* state of daylight saving is going to change */
220#  define TM_DL_ENB     0x08   /* daylight saving is enabled */
221#  define TM_LS_ANN     0x10   /* leap second will be inserted */
222#  define TM_LS_ENB     0x20   /* current second is leap second */
223
224#  define _TM_DEFINED
225#endif
226
227
228/* the status flags below are defined starting with rev. 1.32 */
229
230#define TM_ANT_DISCONN  0x1000  /* antenna currently disconnected */
231#define TM_SYN_FLAG     0x2000  /* TIME_SYN output is low */
232#define TM_NO_SYNC      0x4000  /* not sync'ed after reset */
233#define TM_NO_POS       0x8000  /* position not computed after reset, */
234                                /*   LOCK LED off */
235
236/* a struct used to transmit information on date and time */
237
238typedef struct {
239  short channel;        /* -1: the current time; 0, 1: capture 0, 1 */
240  T_GPS t;              /* time in GPS format */
241  TM tm;                /* that time converted to local time */
242} TTM;
243
244
245
246/* Two types of variables used to store a position. Type XYZ is */
247/* used with a position in earth centered, earth fixed (ECEF) */
248/* coordinates whereas type LLA holds such a position converted */
249/* to geographic coordinates as defined by WGS84 (World Geodetic */
250/* System from 1984). */
251
252#ifndef _XYZ_DEFINED
253  /* sequence and number of components of a cartesian position */
254  enum { XP, YP, ZP, N_XYZ };
255
256  /* a type of array holding a cartesian position */
257  typedef l_fp XYZ[N_XYZ];      /* values are in [m] */
258
259#  define _XYZ_DEFINED
260#endif
261
262
263#ifndef _LLA_DEFINED
264  /* sequence and number of components of a geographic position */
265  enum { LAT, LON, ALT, N_LLA };  /* latitude, longitude, altitude */
266
267  /* a type of array holding a geographic position */
268  typedef l_fp LLA[N_LLA];      /* lon, lat in [rad], alt in [m] */
269
270#  define _LLA_DEFINED
271#endif
272
273/* Synthesizer parameters. Synthesizer frequency is expressed as a */
274/* four digit decimal number (freq) to be multiplied by 0.1 Hz and an */
275/* base 10 exponent (range). If the effective frequency is less than */
276/* 10 kHz its phase is synchronized corresponding to the variable phase. */
277/* Phase may be in a range from -360� to +360� with a resolution of 0.1�, */
278/* so the resulting numbers to be stored are in a range of -3600 to +3600. */
279
280/* Example: */
281/* Assume the value of freq is 2345 (decimal) and the value of phase is 900. */
282/* If range == 0 the effective frequency is 234.5 Hz with a phase of +90�. */
283/* If range == 1 the synthesizer will generate a 2345 Hz output frequency */
284/* and so on. */
285
286/* Limitations: */
287/* If freq == 0 the synthesizer is disabled. If range == 0 the least */
288/* significant digit of freq is limited to 0, 3, 5 or 6. The resulting */
289/* frequency is shown in the examples below: */
290/*     freq == 1230  -->  123.0 Hz */
291/*     freq == 1233  -->  123 1/3 Hz (real 1/3 Hz, NOT 123.3 Hz) */
292/*     freq == 1235  -->  123.5 Hz */
293/*     freq == 1236  -->  123 2/3 Hz (real 2/3 Hz, NOT 123.6 Hz) */
294
295/* If range == MAX_RANGE the value of freq must not exceed 1200, so the */
296/* output frequency is limited to 12 MHz. */
297
298/* Phase will be ignored if the resulting frequency is greater or equal */
299/* to 10 kHz. */
300
301#define MAX_SYNTH_FREQ   1200    /* if range == MAX_SYNTH_RANGE */
302#define MIN_SYNTH_RANGE     0
303#define MAX_SYNTH_RANGE     5
304#define MAX_SYNTH_PHASE  3600
305
306typedef struct {
307  short freq;      /* four digits used; scale: 0.1; e.g. 1234 -> 123.4 Hz */
308  short range;     /* scale factor for freq; 0..MAX_SYNTH_RANGE */
309  short phase;     /* -MAX_SYNTH_PHASE..+MAX_SYNTH_PHASE; >0 -> pulses later */
310} SYNTH;
311
312
313
314/* Time zone/daylight saving parameters. */
315
316/* the name of a time zone, 5 characters plus trailing zero */
317typedef char TZ_NAME[6];
318
319typedef struct {
320  long offs;         /* offset from UTC to local time [sec] */
321  long offs_dl;      /* additional offset if daylight saving enabled [sec] */
322  TM tm_on;          /* date/time when daylight saving starts */
323  TM tm_off;         /* date/time when daylight saving ends */
324  TZ_NAME name[2];   /* names without and with daylight saving enabled */
325} TZDL;
326
327/* The constant below is defined beginning with software rev. 1.29. */
328/* If the year in tzdl.tmon and tzdl.tm_off is or'ed with that constant, */
329/* the receiver automatically generates daylight saving year by year. */
330/* See GPSLIB.TXT for more information. */
331
332#define DL_AUTO_FLAG  0x8000
333
334/* Example: */
335/* for automatic daylight saving enable/disable in Central Europe, */
336/* the variables are to be set as shown below: */
337/*   offs = 3600L           one hour from UTC */
338/*   offs_dl = 3600L        one additional hour if daylight saving enabled */
339/*   tm_on = first Sunday from March 25, 02:00:00h ( year |= DL_AUTO_FLAG ) */
340/*   tm_off = first Sunday from Sept 24, 03:00:00h ( year |= DL_AUTO_FLAG ) */
341/*   name[0] == "MEZ  "     name if daylight saving not enabled */
342/*   name[1] == "MESZ "     name if daylight saving is enabled */
343
344
345
346
347/* the structure below was defined in rev. 1.31. It reflects the status */
348/* of the antenna, the times of last disconnect/reconnect and the boards */
349/* clock offset after the phase of disconnection. */
350
351typedef struct {
352  short status;    /* current status of antenna */
353  TM tm_disconn;   /* time of antenna disconnect */
354  TM tm_reconn;    /* time of antenna reconnect */
355  long delta_t;    /* clock offset at reconnect time, units: TICKS_PER_SEC */
356} ANT_INFO;
357
358
359/* the status field may be set to one of the values below: */
360
361enum {
362  ANT_INVALID,   /* struct not set yet because ant. has not been disconn. */
363  ANT_DISCONN,   /* ant. now disconn., tm_reconn and delta_t not set */
364  ANT_RECONN     /* ant. has been disconn. and reconn., all fields valid */
365};
366
367
368/* Summary of configuration and health data of all SVs. */
369
370typedef struct {
371  CSUM csum;               /* checksum of the remaining bytes */
372  short valid;             /* flag data are valid */
373
374  T_GPS tot_51;            /* time of transmission, page 51 */
375  T_GPS tot_63;            /* time of transmission, page 63 */
376  T_GPS t0a;               /* complete reference time almanac */
377
378  CFG cfg[N_SVNO];         /* SV configuration from page 63 */
379  HEALTH health[N_SVNO];   /* SV health from pages 51, 63 */
380} CFGH;
381
382
383
384/* UTC correction parameters */
385
386typedef struct {
387  CSUM csum;       /*    checksum of the remaining bytes                  */
388  short valid;     /*    flag data are valid                              */
389
390  T_GPS t0t;       /*    Reference Time UTC Parameters              [sec] */
391  l_fp A0;         /*  � Clock Correction Coefficient 0             [sec] */
392  l_fp A1;         /*  � Clock Correction Coefficient 1         [sec/sec] */
393
394  ushort WNlsf;    /*  week number of nearest leap second                 */
395  short DNt;       /*  the day number at the end of which LS is inserted  */
396  char delta_tls;  /*                                                     */
397  char delta_tlsf; /*                                                     */
398
399} UTC;
400
401/* a struct used to hold the settings of a serial port */
402
403#ifndef _COM_PARM_DEFINED
404  typedef long BAUD_RATE;
405
406  /* indices used to identify a parameter in the framing string */
407  enum { F_DBITS, F_PRTY, F_STBITS };
408
409  /* types of handshake */
410  enum { HS_NONE, HS_XONXOFF, HS_RTSCTS };
411
412  typedef struct {
413    BAUD_RATE baud_rate;    /* e.g. 19200L */
414    char framing[4];        /* e.g. "8N1" */
415    short handshake;        /* a numeric value, only HS_NONE supported yet */
416  } COM_PARM;
417
418#define _COM_PARM_DEFINED
419#endif
420
421
422
423/* the codes below define what has to comes out of the serial ports */
424
425enum { STR_ON_REQ, STR_PER_SEC,
426       STR_PER_MIN, N_STR_MODE_0,      /* COM0 and COM1 */
427       STR_UCAP = N_STR_MODE_0,
428       STR_UCAP_REQ, N_STR_MODE_1      /* COM1 only */
429     };
430
431
432#define N_COM   2  /* the number of serial ports */
433
434/* the structure used to store the modes of both serial ports */
435
436typedef struct {
437  COM_PARM com[N_COM];    /* COM0 and COM1 settings */
438  u_char mode[N_COM];      /* COM0 and COM1 output mode */
439} PORT_PARM;
440
441/* Ephemeris parameters of one specific SV. Needed to compute the position */
442/* of a satellite at a given time with high precision. Valid for an */
443/* interval of 4 to 6 hours from start of transmission. */
444
445typedef struct {
446  CSUM csum;       /*    checksum of the remaining bytes                  */
447  short valid;     /*    flag data are valid                              */
448
449  HEALTH health;   /*    health indication of transmitting SV      [---]  */
450  IOD IODC;        /*    Issue Of Data, Clock                             */
451  IOD IODE2;       /*    Issue of Data, Ephemeris (Subframe 2)            */
452  IOD IODE3;       /*    Issue of Data, Ephemeris (Subframe 3)            */
453  T_GPS tt;        /*    time of transmission                             */
454  T_GPS t0c;       /*    Reference Time Clock                      [---]  */
455  T_GPS t0e;       /*    Reference Time Ephemeris                  [---]  */
456
457  l_fp   sqrt_A;   /*    Square Root of semi-major Axis        [sqrt(m)]  */
458  l_fp   e;        /*    Eccentricity                              [---]  */
459  l_fp   M0;       /*  � Mean Anomaly at Ref. Time                 [rad]  */
460  l_fp   omega;    /*  � Argument of Perigee                       [rad]  */
461  l_fp   OMEGA0;   /*  � Longit. of Asc. Node of orbit plane       [rad]  */
462  l_fp   OMEGADOT; /*  � Rate of Right Ascension               [rad/sec]  */
463  l_fp   deltan;   /*  � Mean Motion Diff. from computed value [rad/sec]  */
464  l_fp   i0;       /*  � Inclination Angle                         [rad]  */
465  l_fp   idot;     /*  � Rate of Inclination Angle             [rad/sec]  */
466  l_fp   crc;      /*  � Cosine Corr. Term to Orbit Radius           [m]  */
467  l_fp   crs;      /*  � Sine Corr. Term to Orbit Radius             [m]  */
468  l_fp   cuc;      /*  � Cosine Corr. Term to Arg. of Latitude     [rad]  */
469  l_fp   cus;      /*  � Sine Corr. Term to Arg. of Latitude       [rad]  */
470  l_fp   cic;      /*  � Cosine Corr. Term to Inclination Angle    [rad]  */
471  l_fp   cis;      /*  � Sine Corr. Term to Inclination Angle      [rad]  */
472
473  l_fp   af0;      /*  � Clock Correction Coefficient 0            [sec]  */
474  l_fp   af1;      /*  � Clock Correction Coefficient 1        [sec/sec]  */
475  l_fp   af2;      /*  � Clock Correction Coefficient 2       [sec/sec�]  */
476  l_fp   tgd;      /*  � estimated group delay differential        [sec]  */
477
478  u_short URA;      /*    predicted User Range Accuracy                    */
479
480  u_char L2code;    /*    code on L2 channel                         [---] */
481  u_char L2flag;    /*    L2 P data flag                             [---] */
482
483} EPH;
484
485/* Almanac parameters of one specific SV. A reduced precision set of */
486/* parameters used to check if a satellite is in view at a given time. */
487/* Valid for an interval of more than 7 days from start of transmission. */
488
489typedef struct {
490  CSUM csum;       /*    checksum of the remaining bytes                  */
491  short valid;     /*    flag data are valid                              */
492
493  HEALTH health;   /*                                               [---] */
494  T_GPS t0a;       /*    Reference Time Almanac                     [sec] */
495
496  l_fp   sqrt_A;   /*    Square Root of semi-major Axis         [sqrt(m)] */
497  l_fp   e;        /*    Eccentricity                               [---] */
498
499  l_fp   M0;       /*  � Mean Anomaly at Ref. Time                  [rad] */
500  l_fp   omega;    /*  � Argument of Perigee                        [rad] */
501  l_fp   OMEGA0;   /*  � Longit. of Asc. Node of orbit plane        [rad] */
502  l_fp   OMEGADOT; /*  � Rate of Right Ascension                [rad/sec] */
503  l_fp   deltai;   /*  �                                            [rad] */
504  l_fp   af0;      /*  � Clock Correction Coefficient 0             [sec] */
505  l_fp   af1;      /*  � Clock Correction Coefficient 1         [sec/sec] */
506} ALM;
507
508
509/* ionospheric correction parameters */
510
511typedef struct {
512  CSUM csum;       /*    checksum of the remaining bytes                  */
513  short valid;     /*    flag data are valid                              */
514
515  l_fp   alpha_0;  /*    Ionosph. Corr. Coeff. Alpha 0              [sec] */
516  l_fp   alpha_1;  /*    Ionosph. Corr. Coeff. Alpha 1          [sec/deg] */
517  l_fp   alpha_2;  /*    Ionosph. Corr. Coeff. Alpha 2        [sec/deg^2] */
518  l_fp   alpha_3;  /*    Ionosph. Corr. Coeff. Alpha 3        [sec/deg^3] */
519
520  l_fp   beta_0;   /*    Ionosph. Corr. Coeff. Beta 0               [sec] */
521  l_fp   beta_1;   /*    Ionosph. Corr. Coeff. Beta 1           [sec/deg] */
522  l_fp   beta_2;   /*    Ionosph. Corr. Coeff. Beta 2         [sec/deg^2] */
523  l_fp   beta_3;   /*    Ionosph. Corr. Coeff. Beta 3         [sec/deg^3] */
524
525} IONO;
526
527void mbg_tm_str P((char **, TM *, int));
528void mbg_tgps_str P((char **, T_GPS *, int));
529void get_mbg_header P((unsigned char **, GPS_MSG_HDR *));
530void put_mbg_header P((unsigned char **, GPS_MSG_HDR *));
531void get_mbg_sw_rev P((unsigned char **, SW_REV *));
532void get_mbg_ascii_msg P((unsigned char **, ASCII_MSG *));
533void get_mbg_svno P((unsigned char **, SVNO *));
534void get_mbg_health P((unsigned char **, HEALTH *));
535void get_mbg_cfg P((unsigned char **, CFG *));
536void get_mbg_tgps P((unsigned char **, T_GPS *));
537void get_mbg_tm P((unsigned char **, TM *));
538void get_mbg_ttm P((unsigned char **, TTM *));
539void get_mbg_synth P((unsigned char **, SYNTH *));
540void get_mbg_tzdl P((unsigned char **, TZDL *));
541void get_mbg_antinfo P((unsigned char **, ANT_INFO *));
542void get_mbg_cfgh P((unsigned char **, CFGH *));
543void get_mbg_utc P((unsigned char **, UTC *));
544void get_mbg_lla P((unsigned char **, LLA));
545void get_mbg_xyz P((unsigned char **, XYZ));
546void get_mbg_portparam P((unsigned char **, PORT_PARM *));
547void get_mbg_eph P((unsigned char **, EPH *));
548void get_mbg_alm P((unsigned char **, ALM *));
549void get_mbg_iono P((unsigned char **, IONO *));
550
551unsigned long mbg_csum P((unsigned char *, unsigned int));
552
553#endif
554/*
555 * History:
556 *
557 * mbg_gps166.h,v
558 * Revision 4.7  2006/06/22 18:41:43  kardel
559 * clean up signedness (gcc 4)
560 *
561 * Revision 4.6  2005/10/07 22:11:56  kardel
562 * bounded buffer implementation
563 *
564 * Revision 4.5.2.1  2005/09/25 10:23:48  kardel
565 * support bounded buffers
566 *
567 * Revision 4.5  2005/06/25 10:58:45  kardel
568 * add missing log keywords
569 *
570 * Revision 4.1  1998/06/12 15:07:30  kardel
571 * fixed prototyping
572 *
573 * Revision 4.0  1998/04/10 19:50:42  kardel
574 * Start 4.0 release version numbering
575 *
576 * Revision 1.1  1998/04/10 19:27:34  kardel
577 * initial NTP VERSION 4 integration of PARSE with GPS166 binary support
578 *
579 * Revision 1.1  1997/10/06 20:55:38  kardel
580 * new parse structure
581 *
582 */
583