Annotation of embedaddon/ntp/ntpd/jupiter.h, revision 1.1
1.1 ! misho 1: /* @(#) $Header$ (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>