File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / ntpd / jupiter.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:37 2012 UTC (12 years, 1 month ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    1: /* @(#) $Header: /usr/local/www/users/anoncvs/cvs/embedaddon/ntp/ntpd/jupiter.h,v 1.1.1.1 2012/05/29 12:08:37 misho Exp $ (LBL) */
    2: 
    3: /*
    4:  * Rockwell Jupiter GPS receiver definitions
    5:  *
    6:  * This is all based on the "Zodiac GPS Receiver Family Designer's
    7:  * Guide" (dated 12/96)
    8:  */
    9: 
   10: #define JUPITER_SYNC		0x81ff	/* sync word (book says 0xff81 !?!?) */
   11: #define JUPITER_ALL		0xffff	/* disable all output messages */
   12: 
   13: /* Output messages (sent by the Jupiter board) */
   14: #define JUPITER_O_GPOS		1000	/* geodetic position status */
   15: #define JUPITER_O_EPOS		1001	/* ECEF position status */
   16: #define JUPITER_O_CHAN		1002	/* channel summary */
   17: #define JUPITER_O_VIS		1003	/* visible satellites */
   18: #define JUPITER_O_DGPS		1005	/* differential GPS status */
   19: #define JUPITER_O_MEAS		1007	/* channel measurement */
   20: #define JUPITER_O_ID		1011	/* receiver id */
   21: #define JUPITER_O_USER		1012	/* user-settings output */
   22: #define JUPITER_O_TEST		1100	/* built-in test results */
   23: #define JUPITER_O_MARK		1102	/* measurement time mark */
   24: #define JUPITER_O_PULSE		1108	/* UTC time mark pulse output */
   25: #define JUPITER_O_PORT		1130	/* serial port com parameters in use */
   26: #define JUPITER_O_EUP		1135	/* EEPROM update */
   27: #define JUPITER_O_ESTAT		1136	/* EEPROM status */
   28: 
   29: /* Input messages (sent to the Jupiter board) */
   30: #define JUPITER_I_PVTINIT	1200	/* geodetic position and velocity */
   31: #define JUPITER_I_USER		1210	/* user-defined datum */
   32: #define JUPITER_I_MAPSEL	1211	/* map datum select */
   33: #define JUPITER_I_ELEV		1212	/* satellite elevation mask control */
   34: #define JUPITER_I_CAND		1213	/* satellite candidate select */
   35: #define JUPITER_I_DGPS		1214	/* differential GPS control */
   36: #define JUPITER_I_COLD		1216	/* cold start control */
   37: #define JUPITER_I_VALID		1217	/* solution validity criteria */
   38: #define JUPITER_I_ALT		1219	/* user-entered altitude input */
   39: #define JUPITER_I_PLAT		1220	/* application platform control */
   40: #define JUPITER_I_NAV		1221	/* nav configuration */
   41: #define JUPITER_I_TEST		1300	/* preform built-in test command */
   42: #define JUPITER_I_RESTART	1303	/* restart command */
   43: #define JUPITER_I_PORT		1330	/* serial port com parameters */
   44: #define JUPITER_I_PROTO		1331	/* message protocol control */
   45: #define JUPITER_I_RDGPS		1351	/* raw DGPS RTCM SC-104 data */
   46: 
   47: struct jheader {
   48: 	u_short sync;		/* (JUPITER_SYNC) */
   49: 	u_short id;		/* message id */
   50: 	u_short len;		/* number of data short wordss (w/o cksum) */
   51: 	u_char reqid;		/* JUPITER_REQID_MASK bits available as id */
   52: 	u_char flags;		/* flags */
   53: 	u_short hsum;		/* header cksum */
   54: };
   55: 
   56: #define JUPITER_REQID_MASK	0x3f	/* bits available as id */
   57: #define JUPITER_FLAG_NAK	0x01	/* negative acknowledgement */
   58: #define JUPITER_FLAG_ACK	0x02	/* acknowledgement */
   59: #define JUPITER_FLAG_REQUEST	0x04	/* request ACK or NAK */
   60: #define JUPITER_FLAG_QUERY	0x08	/* request one shot output message */
   61: #define JUPITER_FLAG_LOG	0x20	/* request periodic output message */
   62: #define JUPITER_FLAG_CONN	0x40	/* enable periodic message */
   63: #define JUPITER_FLAG_DISC	0x80	/* disable periodic message */
   64: 
   65: #define JUPITER_H_FLAG_BITS \
   66:     "\020\1NAK\2ACK\3REQUEST\4QUERY\5MBZ\6LOG\7CONN\10DISC"
   67: 
   68: /* Log request messages (data payload when using JUPITER_FLAG_LOG) */
   69: struct jrequest {
   70: 	u_short trigger;		/* if 0, trigger on time trigger on
   71: 					   update (e.g. new almanac) */
   72: 	u_short interval;		/* frequency in seconds */
   73: 	u_short offset;			/* offset into minute */
   74: 	u_short dsum;			/* checksum */
   75: };
   76: 
   77: /* JUPITER_O_GPOS (1000) */
   78: struct jgpos {
   79: 	u_short stime[2];		/* set time (10 ms ticks) */
   80: 	u_short seq;			/* sequence number */
   81: 	u_short sseq;			/* sat measurement sequence number */
   82: 	u_short navval;			/* navigation soltuion validity */
   83: 	u_short navtype;		/* navigation solution type */
   84: 	u_short nmeas;			/* # of measurements used in solution */
   85: 	u_short polar;			/* if 1 then polar navigation */
   86: 	u_short gweek;			/* GPS week number */
   87: 	u_short sweek[2];		/* GPS seconds into week */
   88: 	u_short nsweek[2];		/* GPS nanoseconds into second */
   89: 	u_short utcday;			/* 1 to 31 */
   90: 	u_short utcmon;			/* 1 to 12 */
   91: 	u_short utcyear;		/* 1980 to 2079 */
   92: 	u_short utchour;		/* 0 to 23 */
   93: 	u_short utcmin;			/* 0 to 59 */
   94: 	u_short utcsec;			/* 0 to 59 */
   95: 	u_short utcnsec[2];		/* 0 to 999999999 */
   96: 	u_short lat[2];			/* latitude (radians) */
   97: 	u_short lon[2];			/* longitude (radians) */
   98: 	u_short height[2];		/* height (meters) */
   99: 	u_short gsep;			/* geoidal separation */
  100: 	u_short speed[2];		/* ground speed (meters/sec) */
  101: 	u_short course;			/* true course (radians) */
  102: 	u_short mvar;
  103: 	u_short climb;
  104: 	u_short mapd;
  105: 	u_short herr[2];
  106: 	u_short verr[2];
  107: 	u_short terr[2];
  108: 	u_short hverr;
  109: 	u_short bias[2];
  110: 	u_short biassd[2];
  111: 	u_short drift[2];
  112: 	u_short driftsd[2];
  113: 	u_short dsum;			/* checksum */
  114: };
  115: #define JUPITER_O_GPOS_NAV_NOALT	0x01	/* altitude used */
  116: #define JUPITER_O_GPOS_NAV_NODGPS	0x02	/* no differential GPS */
  117: #define JUPITER_O_GPOS_NAV_NOSAT	0x04	/* not enough satellites */
  118: #define JUPITER_O_GPOS_NAV_MAXH		0x08	/* exceeded max EHPE */
  119: #define JUPITER_O_GPOS_NAV_MAXV		0x10	/* exceeded max EVPE */
  120: 
  121: /* JUPITER_O_CHAN (1002) */
  122: struct jchan {
  123: 	u_short stime[2];		/* set time (10 ms ticks) */
  124: 	u_short seq;			/* sequence number */
  125: 	u_short sseq;			/* sat measurement sequence number */
  126: 	u_short gweek;			/* GPS week number */
  127: 	u_short sweek[2];		/* GPS seconds into week */
  128: 	u_short gpsns[2];		/* GPS nanoseconds from epoch */
  129: 	struct jchan2 {
  130: 		u_short flags;		/* flags */
  131: 		u_short prn;		/* satellite PRN */
  132: 		u_short chan;		/* channel number */
  133: 	} sat[12];
  134: 	u_short dsum;
  135: };
  136: 
  137: /* JUPITER_O_VIS (1003) */
  138: struct jvis {
  139: 	u_short stime[2];		/* set time (10 ms ticks) */
  140: 	u_short seq;			/* sequence number */
  141: 	u_short gdop;			/* best possible GDOP */
  142: 	u_short pdop;			/* best possible PDOP */
  143: 	u_short hdop;			/* best possible HDOP */
  144: 	u_short vdop;			/* best possible VDOP */
  145: 	u_short tdop;			/* best possible TDOP */
  146: 	u_short nvis;			/* number of visible satellites */
  147: 	struct jvis2 {
  148: 		u_short prn;		/* satellite PRN */
  149: 		u_short azi;		/* satellite azimuth (radians) */
  150: 		u_short elev;		/* satellite elevation (radians) */
  151: 	} sat[12];
  152: 	u_short dsum;			/* checksum */
  153: };
  154: 
  155: /* JUPITER_O_ID (1011) */
  156: struct jid {
  157: 	u_short stime[2];		/* set time (10 ms ticks) */
  158: 	u_short seq;			/* sequence number */
  159: 	char chans[20];			/* number of channels (ascii) */
  160: 	char vers[20];			/* software version (ascii) */
  161: 	char date[20];			/* software date (ascii) */
  162: 	char opts[20];			/* software options (ascii) */
  163: 	char reserved[20];
  164: 	u_short dsum;			/* checksum */
  165: };
  166: 
  167: /* JUPITER_O_USER (1012) */
  168: struct juser {
  169: 	u_short stime[2];		/* set time (10 ms ticks) */
  170: 	u_short seq;			/* sequence number */
  171: 	u_short status;			/* operatinoal status */
  172: 	u_short coldtmo;		/* cold start time-out */
  173: 	u_short dgpstmo;		/* DGPS correction time-out*/
  174: 	u_short emask;			/* elevation mask */
  175: 	u_short selcand[2];		/* selected candidate */
  176: 	u_short solflags;		/* solution validity criteria */
  177: 	u_short nsat;			/* number of satellites in track */
  178: 	u_short herr[2];		/* minimum expected horizontal error */
  179: 	u_short verr[2];		/* minimum expected vertical error */
  180: 	u_short platform;		/* application platform */
  181: 	u_short dsum;			/* checksum */
  182: };
  183: 
  184: /* JUPITER_O_PULSE (1108) */
  185: struct jpulse {
  186: 	u_short stime[2];		/* set time (10 ms ticks) */
  187: 	u_short seq;			/* sequence number */
  188: 	u_short reserved[5];
  189: 	u_short sweek[2];		/* GPS seconds into week */
  190: 	short offs;			/* GPS to UTC time offset (seconds) */
  191: 	u_short offns[2];		/* GPS to UTC offset (nanoseconds) */
  192: 	u_short flags;			/* flags */
  193: 	u_short dsum;			/* checksum */
  194: };
  195: #define JUPITER_O_PULSE_VALID		0x1	/* time mark validity */
  196: #define JUPITER_O_PULSE_UTC		0x2	/* GPS/UTC sync */
  197: 
  198: /* JUPITER_O_EUP (1135) */
  199: struct jeup {
  200: 	u_short stime[2];		/* set time (10 ms ticks) */
  201: 	u_short seq;			/* sequence number */
  202: 	u_char dataid;			/* data id */
  203: 	u_char prn;			/* satellite PRN */
  204: 	u_short dsum;			/* checksum */
  205: };
  206: 
  207: /* JUPITER_I_RESTART (1303) */
  208: struct jrestart {
  209: 	u_short seq;			/* sequence number */
  210: 	u_short flags;
  211: 	u_short dsum;			/* checksum */
  212: };
  213: #define JUPITER_I_RESTART_INVRAM	0x01
  214: #define JUPITER_I_RESTART_INVEEPROM	0x02
  215: #define JUPITER_I_RESTART_INVRTC	0x04
  216: #define JUPITER_I_RESTART_COLD		0x80
  217: 
  218: /* JUPITER_I_PVTINIT (1200) */
  219: struct jpvtinit {
  220: 	u_short flags;
  221: 	u_short gweek;			/* GPS week number */
  222: 	u_short sweek[2];		/* GPS seconds into week */
  223: 	u_short utcday;			/* 1 to 31 */
  224: 	u_short utcmon;			/* 1 to 12 */
  225: 	u_short utcyear;		/* 1980 to 2079 */
  226: 	u_short utchour;		/* 0 to 23 */
  227: 	u_short utcmin;			/* 0 to 59 */
  228: 	u_short utcsec;			/* 0 to 59 */
  229: 	u_short lat[2];			/* latitude (radians) */
  230: 	u_short lon[2];			/* longitude (radians) */
  231: 	u_short height[2];		/* height (meters) */
  232: 	u_short speed[2];		/* ground speed (meters/sec) */
  233: 	u_short course;			/* true course (radians) */
  234: 	u_short climb;
  235: 	u_short dsum;
  236: };
  237: #define JUPITER_I_PVTINIT_FORCE		0x01
  238: #define JUPITER_I_PVTINIT_GPSVAL	0x02
  239: #define JUPITER_I_PVTINIT_UTCVAL	0x04
  240: #define JUPITER_I_PVTINIT_POSVAL	0x08
  241: #define JUPITER_I_PVTINIT_ALTVAL	0x10
  242: #define JUPITER_I_PVTINIT_SPDVAL	0x12
  243: #define JUPITER_I_PVTINIT_MAGVAL	0x14
  244: #define JUPITER_I_PVTINIT_CLIMBVAL	0x18
  245: 
  246: /* JUPITER_I_PLAT (1220) */
  247: struct jplat {
  248: 	u_short seq;			/* sequence number */
  249: 	u_short platform;		/* application platform */
  250: 	u_short dsum;
  251: };
  252: #define JUPITER_I_PLAT_DEFAULT		0	/* default dynamics */
  253: #define JUPITER_I_PLAT_LOW		2	/* pedestrian */
  254: #define JUPITER_I_PLAT_MED		5	/* land (e.g. automobile) */
  255: #define JUPITER_I_PLAT_HIGH		6	/* air */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>