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