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>